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

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

  •  
  •   122281742 · 315 天前 · 1076 次点击
    这是一个创建于 315 天前的主题,其中的信息可能已经有所发展或是发生改变。

    和 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  
       315 天前   ❤️ 1
    ruby (也是 elixir 学习的对象)
    TWorldIsNButThis
        2
    TWorldIsNButThis  
       315 天前 via iPhone
    scala
    anonydmer
        3
    anonydmer  
       315 天前
    1 楼正解
    cyersvet
        4
    cyersvet  
       315 天前
    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  
       315 天前 via iPhone
    有 计算属性的语言都符合要求
    hsfzxjy
        6
    hsfzxjy  
       315 天前 via Android
    pascal 也是
    via
        7
    via  
       315 天前 via iPhone
    是否意味着这种语言无法传递函数?
    msg7086
        8
    msg7086  
       315 天前
    @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  
       314 天前
    @via 可以有专门的函数引用语法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4510 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 01:06 · PVG 09:06 · LAX 18:06 · JFK 21:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.