和 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 1
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 可以有专门的函数引用语法
|