gpt4 book ai didi

object - Julia 参数传递行为

转载 作者:行者123 更新时间:2023-12-04 20:36:26 25 4
gpt4 key购买 nike

来自 Julia 的文档:

Julia function arguments follow a convention sometimes called “pass-by-sharing”...


  • 这是否意味着更改函数内的可变对象也会更改调用者范围内的对象?
  • 但是如果对象是不可变的,那么在函数内部更改它不会影响调用者范围内的对象?在这种情况下,它与按值传递有什么不同吗?
  • 添加 ! 对吗?在函数末尾只是一个约定,但在编译中没有任何语义意义?
  • 传递用户定义复合类型的可变对象的值的最佳方法是什么?我尝试使用 copy() ,但得到的错误是 copy()没有为我的自定义类型定义。我想我需要扩展 copy()对于我的自定义类型。我在哪里可以找到 copy() 的定义对于其他类型(希望在编写扩展时将它们用作引用)?
  • 最佳答案

  • 这是否意味着更改函数内的可变对象也会更改调用者范围内的对象?

  • 简短的回答是 .但是请记住:“更改对象”是一个宽泛的概念,是否为它分配了新的内存位置?如果你在函数作用域内重新分配一个局部变量,肯定会切断与调用者的共享字符串。 --> read more about mutation and assignment
  • 但是如果对象是不可变的,那么在函数内部更改它不会影响调用者范围内的对象?在这种情况下,它与按值传递有什么不同吗?

  • 那是因为一个不可变的不是可变的,所以改变它的唯一方法是分配一个新的内存位置,这样共享字符串将被切断。
  • 我说的对吗!在函数末尾只是一个约定,但在编译中没有任何语义意义?

  • 你是对的。
  • 什么 .... ?

  • 使用 deepcopy()反而。

    关于object - Julia 参数传递行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34607967/

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