
和 elixir 类似, 调用无参数的方法,不需要括号,就像引用一个变量一样,这个变量值为这个无参数方法的返回值
defmodule Demo do def noArg1 do 1 end def noArg2 do noArg1 + 1 end end Demo.noArg1 output: 1 Demo.noArg2 output: 2 1 momocraft 2023-05-18 16:44:44 +08:00 ruby (也是 elixir 学习的对象) |
2 TWorldIsNButThis 2023-05-18 16:47:04 +08:00 via iPhone scala |
3 anonydmer 2023-05-18 16:47:15 +08:00 1 楼正解 |
4 cyersvet 2023-05-18 19:57:25 +08:00 visual basic/vb 也是: Function AddTwo() AddTwo = 1 + 2 End Function Sub Main() result = AddTwo + 3 Debug.Print "Result is " & result End Sub |
5 yueqianzhang 2023-05-18 20:07:52 +08:00 via iPhone 有 计算属性的语言都符合要求 |
6 hsfzxjy 2023-05-18 22:38:24 +08:00 via Android pascal 也是 |
7 via 2023-05-18 22:59:05 +08:00 via iPhone 是否意味着这种语言无法传递函数? |
8 msg7086 2023-05-19 07:18:24 +08:00 @via 不是。只能说明当你只写函数名的时候不能传递函数。不能排除用其他表达方式传递。Ruby 中可以使用 Symbol 传递函数,也可以转换成 Proc 。 (另外 Ruby 中其实没有函数调用,只有 对象+方法 调用,而方法调用是用消息实现的,即 obj.f(a) 本质上是向 obj 发送 "f, a" 的消息。因此如果是以 Symbol 方式传入 method_name ,可以用 obj.call(method_name) 实现。如果是转成 Proc ,则是用调用 block 的方法,即 yield 实现。) (最近几年写 Ruby 少了,不知道有没有记错的……) |
9 TWorldIsNButThis 2023-05-19 15:59:44 +08:00 @via 可以有专门的函数引用语法 |