【问题标题】:Julia 1.0.0: What does the `=>` operator do?Julia 1.0.0:`=>` 运算符有什么作用?
【发布时间】:2018-09-24 23:47:27
【问题描述】:

我看到 => 的 Stackoverflow 代码,但是当我在 Julia 1.0.0 在线帮助中搜索“=>”时,我得到零命中。

replace!(x, 0=>4)  # The last expression is the focus of this question.

在我得到的 REPL 帮助中:

help?> =>
search: =>

  Pair(x, y)
  x => y

构造一个类型为Pair{typeof(x), typeof(y)} 的Pair 对象。元素存储在字段 first 和 second 中。 它们也可以通过迭代来访问。

另见:字典

示例 ≡≡≡≡≡≡≡≡≡≡≡

  julia> p = "foo" => 7
  "foo" => 7

  julia> typeof(p)
  Pair{String,Int64}

  julia> p.first
  "foo"

  julia> for x in p
             println(x)
         end
  foo
  7

=> 在replace!(x, 0=>4) 中做了什么?它会创建一对,将所有零替换为四,还是什么?为什么我在 Julia 1.0.0 在线文档中似乎没有找到它?

编辑

添加的代码可帮助我理解以下@Bill 的有用答案:

julia> x = [1, 0, 3, 2, 0]
5-element Array{Int64,1}:
 1
 0
 3
 2
 0

julia> replace!(x, 0=>4)
5-element Array{Int64,1}:
 1
 4
 3
 2
 4

编辑 2

除了@Bill 接受的答案,我发现@Steven 的答案也很有帮助。抱歉,我无法同时检查它们,但 Bill 最先进入,它们都提供了有用的信息。

【问题讨论】:

    标签: julia


    【解决方案1】:

    “=> 在替换中做了什么!(x, 0=>4)?它是创建一个对,用四个替换所有零,还是什么?”

    它创建了一对。在函数 replace 中,第二个参数位置中的 Pair 意味着 replace() 的多次调度选择一个版本的 replace 函数,其中,给定一个数字数组或字符串 x,x 内适合 Pair 第一部分的所有项目都被替换带有 Pair 的第二部分的实例。

    您可以查看 REPL 文档以获取替换的详细信息。

    【讨论】:

    • 您可以在 OP 中检查我的编辑,看看是否有效。
    • 啊,x 的类型也很重要。所以有一个数字数组的替换版本,其中 0=>4 没有语法错误:)
    • 我应该编辑你的答案吗?看来语法错误的部分可以删除,然后我可以接受。
    • 检查。感谢您更新答案。
    • 我真的很想在文档中找到该运算符,由于某种原因没有提供定义,这非常好。 doc for pairs function 很有帮助
    【解决方案2】:

    这个小例子应该显示“=>”如何组成一对

    julia> replace("julia", Pair("u", "o"))
    
    "jolia"
    
    julia> replace("julia", "u" => "o")
    
    "jolia"
    

    【讨论】:

      【解决方案3】:

      “=>”操作符的意思是“变成”

      所以

      julia> replace("hello world",'l' => 'z')
      "hezzo worzd"
      

      表示使用 "change" 'l' "into" 'z' 更改字符串 "hello world" 并产生结果字符串“hezzo worzd”

      julia> replace( [1,2,3,4,5], 3 => 666 )
      5-element Array{Int64,1}:
         1
         2
       666
         4
         5
      

      【讨论】:

      • 感谢您的回答。文档在哪里提供此“更改为”信息。我在 Julia 1.0.0 文档中找不到太多内容?顺便说一句,这些都是很好的例子。
      • Julia 的文档中没有“更改为”。它来自我使用 Wolfram Mathematica 语言的经验。参见reference.wolfram.com/language/ref/Rule.html中的规则[a,b]
      • 感谢您的链接,史蒂夫。几年前我实际上使用过 Mathematica,但现在已经有一段时间了,我不记得细节了。然而,在我找到 Julia 之前,我有时会使用 Wolfram Alpha 来进行任意精度的数学运算。现在,朱莉娅比我预想的更符合要求。
      • 这个答案不正确。 => 运算符是一个创建Pair 的函数,如@Bill 的回答中所述。然后replace 函数使用此Pair 来决定对其输入进行哪些更改,但=> 本身完全独立于此,并且可以在其他上下文中以完全不同的方式解释。
      • 例如,=> 也用于字典的构造:Dict("A"=>1, "B"=>2) 创建一个字典,其键为“A”和“B”,值为 1 和 2。如您所见, => 在这里并不表示转换,显然与 Mathematica 不同。
      猜你喜欢
      • 2022-01-16
      • 1970-01-01
      • 2014-08-07
      • 2021-04-20
      • 2020-07-21
      • 2017-10-26
      • 2012-10-03
      • 2011-08-19
      • 2010-09-14
      相关资源
      最近更新 更多