Programming languages 是否有一种编程语言,其中函数不';你不接受争论吗?

Programming languages 是否有一种编程语言,其中函数不';你不接受争论吗?,programming-languages,Programming Languages,我知道,这是个奇怪的问题 有没有一种编程语言不能将参数传递给函数 近年来,每一种语言和框架都在努力在任何地方使用依赖注入之类的模式,这让我想知道——如果所有东西都以某种方式自动注入,默认情况下,在任何地方,所有时间,甚至不给你做任何其他事情的选择,会怎么样 因此,函数的参数将始终从本地源中的可用符号完成 首先,这将迫使您始终按照其预期用途命名任何本地符号 例如,这完全是虚构的语法: class UserService { ... function login(username:

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

有没有一种编程语言不能将参数传递给函数

近年来,每一种语言和框架都在努力在任何地方使用依赖注入之类的模式,这让我想知道——如果所有东西都以某种方式自动注入,默认情况下,在任何地方,所有时间,甚至不给你做任何其他事情的选择,会怎么样

因此,函数的参数将始终从本地源中的可用符号完成

首先,这将迫使您始终按照其预期用途命名任何本地符号

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

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
    }
}
构造函数的参数也将自动填充

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

传递给局部函数的参数也会被考虑,因为它们实际上只是局部变量,这会使依赖链之类的东西成为一种隐式的东西-因此,如果您的类需要一个数据库连接,而不是为了它自己使用,而是为了它可以将它传递给其他聚合对象,只需以新参数的形式声明依赖项,即可自动注入连接对象;如果该函数的调用者有合适的参数可用,则该函数的调用者将自动实现该参数,从而无需传递间接依赖项


在现有的语言中有没有这样(或类似)的尝试?

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

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


所以,虽然这是一个有趣的想法,但我不确定它会有多实际。如果真的存在这样一种语言,它可能会被限制在它可以/被设计用来完成什么类型的任务上。

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

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


所以,虽然这是一个有趣的想法,但我不确定它会有多实际。如果确实存在这样一种语言,那么它可能会受限于它可以/设计用于完成的任务类型。

为什么要将参数传递给
数据。获取
?因为这样做很方便,而不是按照你的建议。我想问题已经回答了。为什么要将参数传递给
数据。获取
?因为这样做很方便,而不是按照你的建议。我想问题已经回答了。听起来不错,谢谢:-。。。关于变量范围和RAM,我现在正在学习Go,它告诉我们它是如何鼓励你做与我建议的几乎“相反”的事情——在局部控制结构开始时定义的变量(如果、while、switch等)实际上一旦退出控制结构就超出范围,这似乎也减轻了关于“遗留”中间变量的任何困惑,这些变量不打算在特定语句之后使用或重用。回答得好,谢谢!虽然我不熟悉Go,但我注意到,这种根据需要定义变量并在完成后立即消除变量的设计模式已经非常流行,并且是一种很好的遵循模式,因为它可以帮助您避免很多潜在问题。您提到,在Go中,在控制结构中定义的变量将在控制结构的作用域之后进行处理。据我所知,所有语言都会产生这种行为。变量应该在其作用域结束时自动处理。更不用说生成递归函数是非常困难的(如果不是不可能的话)。听起来不错,谢谢:-。。。关于变量范围和RAM,我现在正在学习Go,它告诉我们它是如何鼓励你做与我建议的几乎“相反”的事情——在局部控制结构开始时定义的变量(如果、while、switch等)实际上一旦退出控制结构就超出范围,这似乎也减轻了关于“遗留”中间变量的任何困惑,这些变量不打算在特定语句之后使用或重用。回答得好,谢谢!虽然我不熟悉Go,但我注意到,这种根据需要定义变量并在完成后立即消除变量的设计模式已经非常流行,并且是一种很好的遵循模式,因为它可以帮助您避免很多潜在问题。您提到,在Go中,在控制结构中定义的变量将在控制结构的作用域之后进行处理。据我所知,所有语言都会产生这种行为。变量应该在其作用域结束时自动处理。更不用说,生成递归函数是极其困难的(如果不是不可能的话)。