V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
122281742
V2EX  ›  问与答

请教一下,有没有有这种语法的语言

  •  
  •   122281742 · 2023-05-18 16:40:36 +08:00 · 1260 次点击
    这是一个创建于 555 天前的主题,其中的信息可能已经有所发展或是发生改变。

    和 elixir 类似, 调用无参数的方法,不需要括号,就像引用一个变量一样,这个变量值为这个无参数方法的返回值

    defmodule Demo do
        def noArg1 do
            1
        end
    
        def noArg2 do
            noArg1 + 1
        end
    end
    Demo.noArg1
    output: 1
    Demo.noArg2
    output: 2
    
    9 条回复    2023-05-19 15:59:44 +08:00
    momocraft
        1
    momocraft  
       2023-05-18 16:44:44 +08:00   ❤️ 1
    ruby (也是 elixir 学习的对象)
    TWorldIsNButThis
        2
    TWorldIsNButThis  
       2023-05-18 16:47:04 +08:00 via iPhone
    scala
    anonydmer
        3
    anonydmer  
       2023-05-18 16:47:15 +08:00
    1 楼正解
    cyersvet
        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
    yueqianzhang
        5
    yueqianzhang  
       2023-05-18 20:07:52 +08:00 via iPhone
    有 计算属性的语言都符合要求
    hsfzxjy
        6
    hsfzxjy  
       2023-05-18 22:38:24 +08:00 via Android
    pascal 也是
    via
        7
    via  
       2023-05-18 22:59:05 +08:00 via iPhone
    是否意味着这种语言无法传递函数?
    msg7086
        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 少了,不知道有没有记错的……)
    TWorldIsNButThis
        9
    TWorldIsNButThis  
       2023-05-19 15:59:44 +08:00
    @via 可以有专门的函数引用语法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   995 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:12 · PVG 04:12 · LAX 12:12 · JFK 15:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.