- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于具有简单的列表速记语法的语言,例如
x = [1,2,3];
printf("This is %s while this is a number %d\n", "a string", 10);
printf("This is %s while this is a number %d\n", ["a string", 10]);
if/elseif/else
。您希望能够在其中传递
elseif/else
的可变数字 block 。但是,可以通过中断
elseif
来避免这种情况。进入
else
与
if
作为单个命令。
最佳答案
即使速记列表可以达到相同的目的,也应该包含变量 args,因为它们增加了直观性并减少了错误。
[这是假设您同意语言功能的可接受“使用”是直观性和减少错误。]
我基于在专有游戏脚本语言中具有这两个功能的纯粹轶事经验以及观察到的学习曲线和用户犯的常见错误。 [用户范围从刚毕业的学生到行业资深人士,在不同的游戏公司从事了超过 15 年的多个多年项目——最大的团队成员有 160 人(20 个核心脚本用户 + 50 个左右的脚本实时“命令-line”用户)。有些是纯脚本编写者,只知道这种脚本语言或其他几种语言,有些也是专业的 C++ 程序员——两组似乎在这个问题上的结果相同。]
[如果它是相关的——我所基于的语言也有类型变量参数,并且所有类型都有一个公共(public)基类。]
多年来,我创建了许多相同的双重方法,尽管一种使用可变长度参数,另一种使用列表。在内部,具有不同接口(interface)的两种方法都将归结为相同的代码——它们只是在文体语法上有所不同。
在“狂野”中,我发现使用包含两个额外字符的速记列表的机制意味着只有两个字符可以被忘记。我根据我被要求“帮助”那些在使用基于列表的方法版本而不是可变参数方法时遇到问题的用户的次数来确定这一点。
至于直观性,我已经对方法进行了一些分析/计数,并且使用可变长度方法的实例数量大大超过了列表方法。此外,当被问及时,人们似乎在美学上更喜欢可变 arg 版本。
但是我仍然相信基于列表的方法有很大的实用性,特别是在进行更复杂的调用和元编程时,因为将一堆参数视为一个单元和常见的列表函数很方便 - 交集,联合,过滤,等也可以用在论点上。
我坚信只添加必要的功能以减少给定程序员在任何时候都需要记住的数量,尽管多年来我发现有时可以保证该规则的有效异常(exception),如果一个功能更容易使用或导致更少的错误。 [我写的早期脚本语言非常精简——在我看来也很优雅——尽管我学到了人们更喜欢它的艰难方式,并且一旦我以直观性和减少错误。]
显然,围绕这些功能具有不同元素的不同语言以及不同的用户和域可能会产生不同的结果——尽管根据我的观察时间,我对它的值(value)相当有信心。
[还有]
变量 args 和速记列表之间的另一个潜在的具体区别取决于语言是否可以指定如何将参数传递到方法/函数接口(interface)的变量 arg 方面与用作速记列表中的元素的参数/语句之间的差异。
如果变量 arg 参数可以指定超出可以为速记列表指定的内容(反之亦然) - 即参数通过引用而不是通过值传递,则参数将使用某种惰性评估或在调用时评估等——然后可以使用一种或另一种语法完成更多工作。
这实际上取决于语言,如果变量参数“组”或速记列表元素使用的参数可以以相同的方式“传递”,则没有区别。
关于language-agnostic - 当速记列表和方法签名覆盖可用时用于变量 args 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8123011/
哪个更好?使用像这样的速记: padding:5px 10px 15px 20px; 或者像这样使用手写体: padding-top:5px; padding-right:10px; padding-
我目前在编辑 manuscript.tex 文件时遇到问题。到目前为止,我一直使用文本简写 $$;然而,出现了一些问题,它要求我将所有 $...$ 替换为 \(\)。 我认为带有替换操作的“sed”应
我想要一个简单的 if 速记来检查一个数组是否有一个特定的键,如果有则取消设置它。 $test = array("hi" => "123"); isset($test["hi"]) ? unset($
我在 F# 中映射记录列表并获取命名值: type Person = { FirstName: string; LastName: string } let people = [ { Firs
因此,我有一对类型类,我将经常一起使用它们,并且我想避免每次都指定它们。基本上,而不是把 :: (Ord a, Fractional a, Ord b, Fractional b, ... Ord z
有没有更优雅的写法? : var AllOperation = $('#menu > li.operation'); var Operation1= AllOperation[0]; $(Operat
基本上我想这样做: x ? console.log("true") : x=55 && console.log("changed!!") 如果x为false,它会将值更改为55和console.log
而不是在方法的开头声明一个列表,添加到它然后返回它 - 我确信有一些可以写在循环中的速记返回语句,例如,保存额外的代码(声明等),但我忘记了。有人知道我的意思吗? 最佳答案 使用 yield : pu
我发现自己经常写这样的东西而且看起来太罗嗦了: obj = my_dict.get('obj') if obj: var = obj 有更好的方法吗?也许在一行中? 最佳答案 get 函数接受
多年来我一直在使用 PHP 进行编程,我一直想知道是否有一种方法可以“预连接”一个字符串。示例: $path = '/lib/modules/something.php'; $server = $_S
在将值附加到数组时,是否有 JavaScript(甚至在 coffeescript 中).push() 的简写?很像 php 的 $array[] = 'added to array';。 最佳答案
我读了this tutorial关于在 CSS 选择器中使用正则表达式并试图推断:是否有 CSS 速记来执行以下操作?我想选择所有类为“foo”的 div,这些类有一个附加类“a”、“b”、“c”或“
如何将 rotateX(50deg) rotateY(20deg) rotateZ(15deg) 组合成简写 rotate3d()? 最佳答案 rotateX(50deg) 等价于rotate3d(1
如何将 rotateX(50deg) rotateY(20deg) rotateZ(15deg) 组合成简写 rotate3d()? 最佳答案 rotateX(50deg) 等价于rotate3d(1
我有一个像这样的简单对象(或数组)... stdClass Object ( [people] => Array ( [0] => stdClass Object ( [nam
我有一个变量,如果该变量是一个对象,我想在该对象上调用一个方法,如果不是,我什么也不想做。 我想知道是否有任何理由不应该这样做。 var foo = null; /////////////////
我想知道是否有任何简写方式可以在 JavaScript 中创建一个 promise,或者有什么方法可以将 .then 添加到普通函数中。示例: dbl = a => a | 0 ? a * 2 : !
是否有以下 JavaScript bool 三元表达式的简写语法: var foo = (expression) ? true : false 最佳答案 当然,您只想将表达式转换为 bool 值: v
这个问题在这里已经有了答案: One-liner to take some properties from object in ES 6 (13 个答案) How to get a subset o
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭8 年前。 Improve
我是一名优秀的程序员,十分优秀!