我知道,这是一个奇怪的问题。
是否存在无法将参数传递给函数的编程语言?
近年来,每一种语言和框架都在努力使用各种依赖注入等模式,这让我很奇怪 - 如果一切都是默认情况下自动注入,无论何时何地都是如此,甚至没有让你选择做什么其他什么?
因此,函数的参数总是从本地源中的可用符号完成。
首先,这会强制您始终将任何本地符号与其预期用途一致地命名。
例如 - 这是完全虚构的语法:
class UserService {
...
function login(username: string, password: string) { ... }
}
class UserController {
function login(userService: UserService, post: PostData) {
var username = data.get('username')
var password = data.get('password')
u.login() // arguments automatically filled
}
}
构造函数的参数也将自动填充。
在本地源中声明的对象属性也可以考虑用于填充参数。
传递给本地函数的参数也会被考虑,因为它们实际上只是局部变量,这会使依赖链之类的东西成为隐含的东西 - 所以如果你的类需要数据库连接而不是它自己使用,而只是所以它可以将它传递给其他聚合对象,只需通过以新参数的形式声明依赖关系就可以自动注入连接对象;如果具有合适的参数,那么该函数的调用者将自动满足该参数,从而消除了传递间接依赖性的需要。
是否曾在任何现有语言中尝试过类似的内容?
答案 0 :(得分:1)
我不知道。它似乎是编程语言试图避免的一个特性,因为在较大的项目中,你最终会得到成千上万的变量,跟踪这些变量会非常混乱,更不用说大量浪费的RAM。
大多数编程语言都试图鼓励您仅使用您需要的内容,这有利于提高性能并降低RAM开销。如果你在全局范围内拥有所有变量,那么内存泄漏也可能是一个常见问题。
所以,虽然这是一个有趣的想法,但我不确定它会有多实用。如果这样的语言确实存在,它可能会被限制在它可以/将要完成的任务类型中。