首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在函数名中使用特殊字符

在函数名中使用特殊字符
EN

Stack Overflow用户
提问于 2009-10-21 10:18:17
回答 4查看 15.1K关注 0票数 27

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

代码语言:javascript
复制
[].empty?   #=> true 

另一个标准约定是,如果方法是破坏性的(即,它修改了原始数据),则方法名以感叹号结尾:

代码语言:javascript
复制
mylist.sort! # sort mylist in-place

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-21 11:00:14

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

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

原始问题中的示例来自Ruby,这样的用法在哪里?还有!在适当的情况下,接受结束方法的名称。这种接受来自于1)在语法中作为符号终止符容易获得2)使用?还有!在标准库中。但是,应该注意到!并不是普遍用于暗示“副作用”,通常只出现在可选的形式:保存/保存!,排序/排序!等。有压倒性的执行副作用的方法没有!前缀。

就我个人而言,如果我在设计一门语言,我会允许?,!和‘是符号名称中有效的不带引号的尾随字符。尽管有些语言允许完整的符号转义,比如Scala,但通常会避免使用这样的符号,因为必须引用它们以供使用是一件痛苦的事情。

代码语言:javascript
复制
// 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

在罗马的时候。

  • Scala - empty?还是empty_?(不是common)
  • C/C++/JS/Java/Python/Perl -不是?或者!在标识符中;JS/Java允许$;$是Perl
  • C/C++/Perl/JS中的符号?
  • C#- isEmpty (方法或属性)或空的(property)
  • Python - is_empty或isEmpty (尽管通常是len协议:JS- IsEmpty per Language Guide
  • Ruby -特殊尾随?还有!(quoting?)
  • JS -间接标识符访问: obj"empty?"
  • Lisp (常规):空-p表示谓词;reader/quoting
  • Julia - appends ! to functions that modify their arguments

的变体

很高兴看到更正和/或添加--只是杯水车薪。

票数 19
EN

Stack Overflow用户

发布于 2009-10-21 10:54:54

我不是函数名中特殊字符的狂热粉丝,但我也会用一根湿芹菜把文件名中的空格打死:-)

使用isEmpty()可以很容易地完成?变体,而使用sortInPlace()可以轻松完成!变体。

英语是一种适应性很强的语言,即使没有标点符号也是如此。

在这两种情况下,我选择的语言(C和Java)都使用标点符号来做其他事情。将它们也放在标识符中将使词法分析成为一场噩梦。

票数 3
EN

Stack Overflow用户

发布于 2009-10-21 10:31:59

在C#中,在方法名(或任何标识符)前加上"@“允许您使用通常保留的关键字来命名该方法。

代码语言:javascript
复制
void null() {}
// Invalid token 'null' in class, struct, or interface member declaration

void @null()
// compiles

不要这样做;它主要用于机器生成的代码,比如数据集。MSDN page on the topic.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1598410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档