gpt4 book ai didi

julia - 将函数重新分配给值

转载 作者:行者123 更新时间:2023-12-03 14:32:13 26 4
gpt4 key购买 nike

我不明白为什么会发生/为什么我在执行 somefunc() = 100 时没有收到错误消息?现在当我“打电话”somefunc , 它输出 100 .我也试过做somefunc = 100 ,然后给我一个错误。重新分配后somefunc()100 , 当我写 somefunc ,它仍然说它是一个函数。

这里到底发生了什么?为什么重新分配 somefunc 时出现错误为一个值,但在重新分配 somefunc() 时, 不是?为什么somefunc仍然说它是一个功能,即使在重新分配它之后?

最佳答案

当你写 somefunc() = 100在全局范围内,您为 somefunc 定义了一个新方法。功能。这有两个效果:

  • 如果 somefunc未定义,使其成为绑定(bind)到新泛型函数的常量(即不能像 const x = 123 那样重新分配)。
  • 是否新添加方法 () -> 100somefunc通用函数对象。

  • 事实上, somefunc 的绑定(bind)是恒定的,这就是为什么你不能在之后重新分配它。这对性能非常重要,因为非常量全局变量的性能很差;如果函数绑定(bind)不是恒定的,那么任何时候调用函数都会很慢。

    即使你不能改变什么功能 somefunc指的是,您可以通过向其添加方法甚至覆盖现有方法来更改函数本身。比如以后写 somefunc() = 200不会创建新函数,而是用返回 200 而不是 100 的新方法替换不带参数的函数的方法。

    当你写:
    somefunc() = 100

    它只是一个简写
    function somefunc()
    return 100
    end

    所以即使有 =符号,这是一个赋值运算符,它与写 x = 100 不同。 ,它只是绑定(bind)值 100姓名 x .特别注意写作例如:
    somefunc = () -> 100

    允许你写 somefunc() , 并得到 100 .不过这次你以后有空写 somefunc = 100 ,如 somefunc = () -> 100不是函数定义,而是绑定(bind)匿名函数 () -> 100 的 na 赋值。名 somefunc .

    关于julia - 将函数重新分配给值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61839966/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com