cor*_*ore 7 programming-languages if-statement
我有一个微弱的记忆,能够用这样的语言写一个if语句:
if (foobar == ("this" || "that"))
Run Code Online (Sandbox Code Playgroud)
代替:
if (foobar == "this" || foobar == "that")
Run Code Online (Sandbox Code Playgroud)
后者更冗长,因此对我来说不那么美观.
以前的公约是否支持任何主要语言?有没有理由不支持这一点?
Icon编程语言就有这个功能。
通过使用生成器,您可以做到
if i = (0 | 1) then write("0 or 1")
Run Code Online (Sandbox Code Playgroud)
如果 i = 0 或 i = 1,则成功。您甚至可以这样做:
if (i | j | k) = (0 | 1) then write("0 or 1")
Run Code Online (Sandbox Code Playgroud)
如果 i、j 或 k 中的任何一个等于 0 或 1,则成功。
这背后的基本思想是,每个(1|2|3..)序列都会创建一个生成器,该生成器将依次返回每个值,直到用完所有值。当您在像这样的布尔情况下使用生成器时,将从生成器请求值,直到比较成功。当您在比较的任一侧组合两个生成器时,将尝试所有可能的组合,直到其中一个成功。(如果值不相等,则相等运算符将“失败”,而不是返回 false。)