在大多数其他面向对象语言中。让每个函数接收一个对象的关联数组而不是在方法签名中枚举每个对象是一种亵渎。但是,为什么这两种语言在大多数流行的框架中都可以接受并普遍使用它来执行此操作?
除了希望拥有简洁的方法签名之外,还有其他理由吗?
我确实看到了这样做的好处——API 可以在添加新的可选参数时保持不变。但是 Javascript 和 PHP 已经允许在它们的方法签名中使用可选参数。如果有的话,Java 或其他 OO 语言似乎会从中受益更多……但我很少在那里看到这种模式。
什么给了?
最佳答案
在我看来,这些函数中的很多都在增加它们接受的参数数量,超过 10 个并不少见。即使你做可选参数,你仍然必须按顺序发送。
考虑这样一个函数:
function myFunc(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13){
//...
}
假设您只想使用参数 3 和 11。这是您的代码:
myFunc(null, null, null, 'hello', null, null, null, null, null, null, null, 'world');
难道你不想:
myFunc({
a3 : 'hello',
a11 : 'world'
});
?
关于php - 为什么配置数组在 PHP 和 Javascript 中是可接受的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2676996/