gpt4 book ai didi

programming-languages - 在函数名中使用特殊字符

转载 作者:行者123 更新时间:2023-12-03 11:28:42 24 4
gpt4 key购买 nike

在 Ruby 中,标准约定是在方法名称的末尾使用问号来指示方法返回 bool 结果:

[].empty?   #=> true 

另一个标准约定是,如果方法具有破坏性(即,它修改了原始数据),则方法名称以感叹号结尾:
mylist.sort! # sort mylist in-place

最近我在 Scheme 中看到了这些相同的约定。这让我想知道,还有哪些其他语言使用/支持这个约定?是否有其他特殊字符通常用于这些或其他语言的命名?

最佳答案

答案当然是特定于语言(和语言文化)的。

例如,根据语言,以下所有选项都是合适的:empty-p、empty?、empty、is_empty 或 isEmpty。 (当然,这些例子不包括在内)。

原始问题中的示例来自Ruby where such use of ?和 !结束方法名称在适当的情况下被接受。这种接受来自 1) 作为语法中的符号终止符易于访问 2) 使用 ?和 !在标准库中。但是,需要注意的是!并非普遍用于暗示“副作用”,并且通常仅以替代形式出现:保存/保存!,排序/排序!等。执行副作用的方法有绝大多数,但没有!字首。

就个人而言,如果我正在设计一种语言,我会允许?,!和 ' 是符号名称中有效的不带引号的尾随字符。尽管某些语言允许完全符号转义,例如 Scala,但通常会避免使用此类符号,因为必须引用它们以供使用是很痛苦的。

// in Scala, esp. with Java-compat, the last form is generally used although
// the first two are perfectly valid -- do what makes sense in the language
foo.`empty?`
foo.empty_?
foo.isEmpty

在罗马的时候...
  • 斯卡拉 - empty?还是空的_? (不常见)
  • C/C++/JS/Java/Python/Perl - 不?或者 !在标识符中; JS/Java 允许 $; $ 是 Perl 中的标志
  • C/C++/Perl/JS - 举起手来?
  • C# - IsEmpty(方法或属性)或 Empty(属性)
  • Python - 每个 Guido 指南的 is_empty 或 isEmpty (虽然通常 len 协议(protocol):if not len(foo): "empty!" )
  • Java - isEmpty 根据语言指南
  • Ruby - 特殊尾随?和 ! (引用?)
  • JS - 间接标识符访问:obj["empty?"](对此不常见)
  • Lisp(常规):empty-p 表示谓词;读者/引用的变化
  • Julia - appends ! to functions that modify their arguments

  • 很高兴看到更正和/或补充——只是杯水车薪。

    关于programming-languages - 在函数名中使用特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1598410/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com