首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能直接连接到Elixir String.length。为什么我必须把它包装在另一个函数中?

Elixir是一种基于Erlang虚拟机的函数式编程语言,它具有强大的并发处理能力和可扩展性。在Elixir中,String.length是一个用于获取字符串长度的内置函数。然而,为什么我们不能直接连接到Elixir String.length,而必须将其包装在另一个函数中呢?

这是因为在Elixir中,函数调用的方式是通过模块名和函数名来完成的,而不是像其他编程语言那样直接调用函数名。这是为了保持代码的一致性和可读性。在Elixir中,所有的函数都必须在模块中定义,然后通过模块名来调用。

对于String.length函数来说,它是定义在Elixir的String模块中的。因此,如果我们想要调用String.length函数,就必须通过String模块来调用。这样做的好处是可以避免函数名冲突,并且可以更好地组织和管理代码。

所以,为了调用String.length函数,我们需要将其包装在另一个函数中,这个函数可以是一个自定义函数或者是一个匿名函数。通过这种方式,我们可以在包装函数中使用String模块,并调用其中的String.length函数来获取字符串的长度。

以下是一个示例代码,展示了如何包装String.length函数:

代码语言:elixir
复制
defmodule MyModule do
  def get_string_length(str) do
    String.length(str)
  end
end

# 调用包装函数
MyModule.get_string_length("Hello, World!")

在上面的代码中,我们定义了一个名为get_string_length的函数,它接受一个字符串作为参数,并在函数体内部调用了String.length函数来获取字符串的长度。通过调用MyModule.get_string_length函数,我们可以获得字符串的长度。

总结起来,为了保持代码的一致性和可读性,Elixir要求我们通过模块名来调用函数。因此,我们不能直接连接到Elixir String.length函数,而必须将其包装在另一个函数中,以便通过模块名来调用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Elixir和ScyllaDB教你创建CRUD CLI,惊人的效率提升!

安装 Elixir一般来说,安装 Elixir 有两种主要方法:直接从包管理器安装或使用编程语言的版本管理器安装。就而言,将使用asdfas 负责管理我的 Elixir 版本。...如果你想使用ScyllaDB Cloud或安装在你的机器上的ScyllaDB,没有问题,只是在初始化和配置项目时小心放置节点链接,但是当我们到达这一部分时我会更好地解释。...创建文件后,我们现在可以创建两个特定的函数,但为什么是两个呢?...在同一个存储库,您也可以使用 Elixir 访问该项目,因此如果您想查看完整的源代码,请知道位于上面提到的同一链接!...希望您喜欢这些内容,并且希望阐明了 ScyllaDB 与 Elixir 的用法。也希望您有兴趣接收更多这样的内容或了解更多有关 Elixir 的信息。

42730

放弃Python转向Go语言:我们找到了以下9大理由

并发性的另一个优质特性是竞赛检测器,这使其很容易弄清楚异步代码是否存在竞态条件。...错误(errors package)可以允许我们添加返回错误的上下文和堆栈追踪而解决该问题。 另一个问题是我们可能会忘记处理报错。...在此示例,我们想要把 simple_gauss(time)*popularity 字符串转变为一种函数,能够 activity 作为输入然后给出得分作为输出。...当然,也不能这么做比较: 该排序代码是用 Go 写的第一个项目; Go 代码是在 Python 代码之后写的,所以提前理解了该案例; Go 的表达解析库质量优越。...相对于 Elixir,我们选择 Go 的另一个原因是生态系统。在我们需求的组件上,Go 的库更为成熟。在很多案例Elixir 库不适合产品使用。

1.9K110

放弃Python转向Go语言:这9大理由就够了 !(附代码)

错误(errors package)可以允许我们添加返回错误的上下文和堆栈追踪而解决该问题。 另一个问题是我们可能会忘记处理报错。...在此示例,我们想要把 simple_gauss(time)*popularity 字符串转变为一种函数,能够 activity 作为输入然后给出得分作为输出。...从 step1 开始使用函数,为 feed 的所有 activity 打分。 开发Python版本排序代码大约需要3天,包括写代码、测试和建立文档。接下来,么花费大约2周的时间优化代码。...当然,也不能这么做比较: 该排序代码是用Go写的第一个项目; Go代码是在Python代码之后写的,所以提前理解了该案例; Go的表达解析库质量优越。...在使用案例,我们观察到Go的原始性能更好。Go和Elixir都能很好地处理数千条并行需求,然而,如果是单独的要求,Go实际上更快。相对于Elixir,我们选择Go的另一个原因是生态系统。

2.3K120

如何使用一门新的语言

过去三周,在疯狂地使用 elixir,做了两个系统,一个是上文提到的 policy engine,另一个是个尽可能通用的 activity stream / notification system。...在 TubiTV,我们引入 elixir 的一大原因是想多一些选择,看看一门新的语言是否能实现已有语言不能实现或者说要费很多周折才能实现的事情。...网上有 open source 的 ansible galaxy elixir 脚本,可以拿来主义;对于有代码洁癖或者不能直接拿来主义的,自己写也并不困难。...由于这是第一次 elixir 引入生产环境,生成 hot reloadable 的 upgrade version 是一个挑战。...错误报告系统一般用 sentry,对于我们而言,sentry 官方有 elixir 的客户端,只要注册一个新的 app, dsn 写入到配置文件即可实现和错误报系统的集成。很简单。

94860

Rails 从入门到完全放弃

谈不上精通Rails,如果Rails作者定为最高等级,他是F1赛车手,该是个跑出租的老司机。...不过,还好有Node.js,让赶上了这个时代。 怎么接触到Rails 当公司的一个PHP的多人即时聊天项目接近尾声时,我们在思考能不能将程序员生产力解放出来?是不是可以尝试一些其他的技术架构。...后面灵感闪现,为什么要给用户一个完整的点击事件呢?一碰到就触发键盘不是可以让用户得到的反馈跟好么。索性偷懒了一。...类似于Amazeui,Ant Design,这些优秀的设计,UI的费用都省了。 Elixir 和 Phoenix 不能说的秘密 Elixir不用说,相信大家都有耳闻了,函数式编程是未来。...一个专业前端的Rails工程师切换到Elixir的过程没有第一次经历的痛苦,当你接受了函数式的思想之后相当顺畅。

2.2K20

为什么我们从Python切换到Go?

例如,你可以: 使用 MetaClass 在代码初始化时自行注册类 交换正确和错误 将函数添加到内置函数列表 通过魔术方法重载操作符 这些功能很有趣,但是,正如大多数程序员都会同意一点,在阅读别人的代码时这些功能经常会使代码更难理解...与 Node 相比,这是一个有趣的方法,开发人员必须密切关注如何处理异步代码。 Go 并发性的另一个重要方面是竞争检测器(race detector)。...该错误通过允许你上下文和堆栈跟踪添加到你的错误解决了这个问题。 另一个问题是,很容易意外忘记处理错误。像 errcheck 和 megacheck 这样的静态分析工具能很方便地避免犯这些错误。...当然,这是两件不同的事情拿来相提并论: 排名代码是用 Go 编写的第一个项目 Go 代码是在 Python 代码之后构建的,因此更好地理解了用例 用于表达式解析的 Go 库具有非凡的质量 你的进度可能会有所不同...Go 和 Elixir 都会为成千上万的并发请求提供出色的服务。但是,如果你查看个性化的请求性能,Go 对于我们的用例来说要快得多。我们之所以选择 Go 而非 Elixir另一个原因是生态系统。

2.6K20

(译) Understanding Elixir Macros, Part 2 - Micro Theory

为什么呢?因为宏有两个看似矛盾的性质: 宏也是 Elixir 代码 宏在在最终的字节码生成之前的展开阶段运行 Elixir 代码是如何在被生成之前运行的?它不能....这是一个例子, 宏引入了一个变量, 必须不是 hygienic 的. 变量 conn 由 get 宏引入, 必须对调用者可见. 另一个例子是使用 ExActor 的....这些只不过是 Elixir 的语法糖. 解释器将 do ... end 转换成了 {:do, ...}. 现在, 只提到了参数是被引用(quoted)的....但是列表还保持着的形状. 这仍然是一个键为 :a 和 :b 的关键词列表. 将它们放在一起 为什么这些都很重要?...使用模块 观察上述代码, 你可以看到 match/2 的胶水代码存在于客户端模块. 这肯定算不上完美, 因为每个客户端都必须提供对这个函数的正确实现, 而且必须调用 do_match 函数.

12840

(译) Understanding Elixir Macros, Part 4 - Diving Deeper

你不需要设计这样的宏, 因为 Erlang 已经有非常强大的跟踪功能, 而且有一个 Elixir 可用. 然而, 这个例子很有趣, 因为需要一些更深层次的 AST 转换技巧....特别地, 我们必须从传递的参数推导出函数名、参数名和函数体....将通过向宏定义添加另一个参数来测试. 一旦得到结果, 我会试图找出参数表示什么, 然后开始构建宏. 宏结束处的 nil 确保我们不生成任何东西(我们生成的 nil 通常与调用者代码无关)....然而, 应该立即指出, 这种实现存在一些问题: 宏不能很好地处理守卫(guards) 模式匹配参数并不总是有效的(例如, 当使用 _ 来匹配任何 term 时) 在模块中直接动态生成代码时, 宏不起作用...在这个例子, 我们设法检测和处理函数 guards. 显然, 因为依赖于 AST 的内部结构, 代码变得更加复杂了.

9430

(译) Understanding Elixir Macros, Part 1 Basics

个人而言, 觉得宏的主题非常有趣, 在本系列文章, 将试图解释它们是如何工作的, 提供一些关于如何编写宏的基本技巧和建议....虽然确信编写宏不是很难, 但与普通的 Elixir 代码相比, 确实需要更高视角的关注. 因此, 认为这了解 Elixir 编译器的一些内部细节是非常有帮助的....需要的效果是有一种方式能够直接注入 bind_expr 和 sum_expr 的内容到生成的 AST 的对应的位置. 这就是 unquote(...)...这意味着 unquote 的结果必须是合法的 AST 片段. 理解 unquote 的另一种方式是, 可以看做是字符串的插值 (#{}). 对于字符串你可以这样写: ".......这是你在运行时不能够对一个普通函数做的事之一. 虽然我们能在运行时调用 Macro.to_string/1, 但问题在于我们没办法再访问 AST 了, 因此不能够知道某些表达式的字符串形式了.

17330

2021第二期_数据挖掘班_微信群答疑笔记

这个是因为你用merge的时候,可能有重复的列名存在,所以它就分了“.x”“.y” rioexport还不能直接导出来excel的格式,导csv汉字又会乱码,encoding = "UTF-8"的参数还不能写在...设置接近于0,精度不够,直接约等于0了,如果有差异基因列表,自己做 安装“DO.db”显示是non-zero exit ststus https://mp.weixin.qq.com/s/T3Y9BAklCx8YFa6TN9VHdA...strings,如果课上代码的T改成F ,名则不会被当成字符串 运行的时候会把pkg当成了一个的名字 老师提取临床信息那里,您直接告诉我们用pData,但是在帮助文档里面看了半天,和pData...不行 如何检查数据框的NA,只能肉眼去看吗? 函数,is.na,加table来检查 的R是3.6版本的 经常装出现上面这种情况 用conda装会简捷一些么?...为什么中间不能有空格儿?子图和子图之间本来就应该有间隔,如果你觉得非常重要,必须去掉,那你只能去搜一下ggpl里面怎样能把分面的时候两张图之间的间隔调整一下,有可能会有那样的参数。

99030

当我做 hackathon 时在做什么 (1)

所以如果不做 hackathon,「让 Elixir 更好支持 data science」这事儿大概率不会去碰。 为什么说它有意思呢?...在大致浏览了一下 polars 的文档后,暗自欣喜,就是了! 接下来就是 Elixir 代码和 Rust 代码的交会对接。 在 Elixir 上使用 rust,rustler[4] 是最好的工具。...做过某个语言到另一个语言的桥接的同学都会有这样的体验:代码本身逻辑并不复杂,主要其实就是接口的类型转换,比如 rust struct 翻译成 elixir struct,或者反之。...可能是之前完美的开局让有些飘飘然,想也没想大手一挥,上述代码封装到一个函数里: def get_reader(*self) -> DataFrame { match data.inner.0.....)), } }; } 这就是本文开头那段示范代码函数 df_add 里使用了奇怪的 df_read!。

1.1K20

翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 第 7 章: 闭 vs 对象

是闭是可怜的对象,还是对象是可怜的闭?或都不是?或都是?或者这只是为了说明闭和对象在某些方面是相同的方式? 还有它们哪个与函数式编程相关?拉一椅子过来并且仔细考虑一会儿。...这样,我们可以近似认为为什么 outer() 的作用域甚至在当执行完都被保留(通过闭),这是因为 scopeOfInner 对象连接到 scopeOfOuter 对象,因此,使这个对象和它的属性完整的被保存下来...对于给定的任务,它们应该被视为使一个或另一个更适合(和可读)的特点和优势。 结构可变性 从概念上讲,闭的结构不是可变的。 换而言之,你永远不能从闭添加或移除状态。...而不是直接对 keypresses 数组使用 push(..) 操作?因为在函数式编程,我们通常希望对待数组如同不可变数据结构,可以被创建和添加,但不能直接改变。...这本书是关于 JavaScript 的轻量级函数式编程,这是一个与核心函数式编程群体有分歧的情况。 认为变量重新赋值当被合理的使用时是相当有用的,的明确性具有相当有可读性。

1.4K80

从 Python 切换到 Go 的 9 个理由

演示了赋值、数据结构、指针、格式化和内置的 HTTP 库。 从首次接触编程开始,总是喜欢使用 Python 的高级特性。Python 使我们能从正在编写的代码获得很好的想法。...与开发人员必须密切关注异步代码处理方式的 Node 相比,这是一个非常有趣的方案。 Go 并发的另一个关注点是竞态检测。使应用程序能够很容易地知道异步代码是否存在任何竞态条件。...尽管它不能与 Java、Python 或 Node 相提并论,但是我们是可以找到许多能够满足基本需求的高质量软件。...缺点 2:错误处理 Go 通过简单地从函数返回错误的形式来处理错误。尽管这种方案是可行的,但是很容易失去错误的范围,从而很难向用户提供有价值的错误信息。...Go 和 Elixir 都能支持数千个并发请求。但是,如果我们查看单个请求的性能,Go 要快得多。我们选择 Go 的另一个原因是的生态系统。

1.2K20

2023-10月的马拉松在线互动授课答疑精选

单击R_02.Rproj进入R studio的时候一直出现连接不到文件夹,这是为什么呢 学员自己的解决办法:破案了,不知道为什么的R studio访问不了的桌面文件(Desktop),含有R...20【文件读取】的txt文件只能通过excel中导入文件打开,但是不能双击文件打开,txt文件默认打开模式也是excel,为什么不能双击快捷打开呢 右键,使用 sublime 打开。...color直接放在geom_bar函数里就好。...试试最后的{1:10}改为{1..10}。 34【Linux】在rm i 交互回答,为啥没出来呢?...所以我就设置了这样的一个参数,允许你那些值特别小的点去掉。 36【Linux小环境】安装Linux软件的时候,忘记创建小环境了,全部装在base里了,怎么办?

36140

你应该定期更新 Homebrew

为什么要定期更新 发现不少人都不会经常更新,或者只在必须用某个工具的新版本的时候才更新。他们的看法是,更新有可能产生一些意外的问题,反正当前环境足够稳定可以用,干嘛自找麻烦呢? 这个看法对也不对。...不对是因为总有一天你需要升级的,也许是为了某个工具的新特性,也许是为了修复软件的漏洞,也许你安装的非要依赖另一个的新版本,等等。如果隔了很长一段时间才升级,那潜在的小问题可能就会变成大问题。...锁定不想更新的 如果经常更新的话,brew update 一次更新所有的是非常方便的。但我们有时候会担心自动升级一些不希望更新的更新了。...我们更希望找个时间单独处理。这时可用 brew pin 去锁定这个,然后 brew update 就会略过了。...brew deps --installed --tree # 查看已安装的的依赖,树形显示 输出如下: elixir (required dependencies) └── :erlang wxmac

1.4K10

2022年3月_生信入门班_微信群答疑笔记

老师,想问一下,像这样用tr文件里的字符替换之后再用>重定向给源文件,为什么源文件就空了呢?重定向给一个新的文件名就没问题 这是一个无解的问题,就是不能把同一个文件给重定向了,没有为什么的。...老师,也是这个安装不了 安装依赖DOSE 这会服务器频繁掉线,是网络的问题嘛 一般不会频繁掉线。检查自己的网络 复制了答疑文件的两行代码,但是没有用。...在原文件里面可以用zless命令查看,但是软链接到自己的文件夹就会出这个错,请问是为什么呀 提示信息说你这个文件是软链接过来的,而且软链接的文件路径太多层了,相对路径太长了,识别不到。...,怎么进另一个群呢 小助手有拉大家进群了 老师请问为啥这道题参数设置成有多个元素的数值型向量就报错了呢?...sd函数不能接受3个参数,它们c起来

1.6K40

用思维模型去理解 React

由于一个组件可以有多个子组件,但只有一个父组件,所以我多个组件想象成一组盒子,一个盒子装在另一个盒子里。每个盒子都必须包含在一个更大的盒子,并且里面可以有多个较小的盒子。 ?...一个很好的 React 的例子是通过子组件更新父级状态。你可能已经做了这件事,却没有意识到自己正在用闭。 首先,我们知道父级不能直接访问子级的信息,但是子级可以访问父级的信息。...一旦在子级调用了该函数仍存在于相同的闭。 这可能很难理解,所以我认为它是闭之间的“隧道”。每个都有自己的作用域,但是我们可以创建一种将两者连接的通信隧道。...在每次 porp 更改时,React 必须重新渲染的原因是希望使用户了解最新的信息。 但是,重新渲染后状态不会改变,它们的值得以维持。这就是为什么盒子是“回收重利用的”而不是每次都创建全新的。...现在已经分别解释了拼图的所有碎片,下面它们放在一起。这是在 React 组件中使用的完整思维模型,它从的想象中直接转化为文字。

2.4K20
领券