clojure - 基于 Clojure 中参数类型的典型返回方法
问题描述
如果参数是一个符号,则返回它。如果参数是一个列表,则调用另一个方法。
Clojure 新手,找不到规范的方法。在 Python 中,可以这样做:
def return_on_arg_type(arg):
if type(arg) is str:
return arg
if type(arg) is list:
return another_method(arg)
可能我可以使用多种方法,但是如何匹配参数的类型以及匹配 Clojure 中可接受的类型?
解决方案
Clojure 中基本上有 3 种调度方法:
- 正如 Alan 所描述的,与谓词结合使用
cond
(即返回 true 或 false 并且名称通常以 结尾的方法)。?
- 使用根据第一个参数的类型分派的协议。这方面的参考文档位于https://clojure.org/reference/protocols
- 多种方法。您可以将 Multimethods 视为一种可编程的调度方法。他们可以做的不仅仅是查看参数的类型,他们还可以查看参数,计算向量参数上的元素等等。https://clojure.org/reference/multimethods上的规范文档
查看Clojure 多方法与协议,以简要讨论多方法与协议。
推荐阅读
- sql - 如何使用 ssisdb 在运行过程中获取 ssis 包执行信息
- vue.js - 在 webpackEmptyContext 中找不到模块“../assets/logo.png”(在 ./src/component
- css - Bootstrap的scss文件在scss文件架构中的正确位置
- html - 如何设置页面上最后一个 Angular 组件的样式?
- wordpress - 查找 Wordpress 302 重定向
- python - 如何过滤掉具有特定数字的数字?
- ibeacon - Android 信标库 - 仅检测特定的 UUID
- uwp - 在 Xbox one 中运行的 C# UWP GamePad 类中需要帮助
- python - 是否有一种灵活的方法可以通过从 shapefile 读取或使用一组顶点创建的多边形来裁剪栅格?
- sas - SAS如何在特定字符串之前提取单个字符串?