是否存在函数不接受参数的编程语言?

时间:2013-12-10 17:13:12

标签: programming-languages

我知道,这是一个奇怪的问题。

是否存在无法将参数传递给函数的编程语言?

近年来,每一种语言和框架都在努力使用各种依赖注入等模式,这让我很奇怪 - 如果一切都是默认情况下自动注入,无论何时何地都是如此,甚至没有让你选择做什么其他什么?

因此,函数的参数总是从本地源中的可用符号完成。

首先,这会强制您始终将任何本地符号与其预期用途一致地命名。

例如 - 这是完全虚构的语法:

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
    }
}

构造函数的参数也将自动填充。

在本地源中声明的对象属性也可以考虑用于填充参数。

传递给本地函数的参数也会被考虑,因为它们实际上只是局部变量,这会使依赖链之类的东西成为隐含的​​东西 - 所以如果你的类需要数据库连接而不是它自己使用,而只是所以它可以将它传递给其他聚合对象,只需通过以新参数的形式声明依赖关系就可以自动注入连接对象;如果具有合适的参数,那么该函数的调用者将自动满足该参数,从而消除了传递间接依赖性的需要。

是否曾在任何现有语言中尝试过类似的内容?

1 个答案:

答案 0 :(得分:1)

我不知道。它似乎是编程语言试图避免的一个特性,因为在较大的项目中,你最终会得到成千上万的变量,跟踪这些变量会非常混乱,更不用说大量浪费的RAM。

大多数编程语言都试图鼓励您仅使用您需要的内容,这有利于提高性能并降低RAM开销。如果你在全局范围内拥有所有变量,那么内存泄漏也可能是一个常见问题。

所以,虽然这是一个有趣的想法,但我不确定它会有多实用。如果这样的语言确实存在,它可能会被限制在它可以/将要完成的任务类型中。