Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 可变汇率?_Ruby - Fatal编程技术网

Ruby 可变汇率?

Ruby 可变汇率?,ruby,Ruby,我如何解释这个表达式,或者请告诉我在哪里可以找到这种表达式的定义,最初我认为有交换值,这就是所谓的“并行赋值”(现在你可以用谷歌搜索它)。这大致相当于: @current_engine, engine_was = engine.to_sym, @current_engine 首先,计算右侧的值,然后分配它们。这就是为什么您还可以使用此技巧交换值: _a = engine.to_sym _b = @current_engine @current_engine = _a engine_was =

我如何解释这个表达式,或者请告诉我在哪里可以找到这种表达式的定义,最初我认为有交换值,这就是所谓的“并行赋值”(现在你可以用谷歌搜索它)。这大致相当于:

@current_engine, engine_was = engine.to_sym, @current_engine
首先,计算右侧的值,然后分配它们。这就是为什么您还可以使用此技巧交换值:

_a = engine.to_sym
_b = @current_engine
@current_engine = _a
engine_was = _b

当将
y
赋值为
x
时,它将使用旧值,该值保存在此表达式开头。

您可以将其展开为三个步骤:

  • 从以下位置创建阵列:

    x, y = y, x
    
  • 将数组赋值到表达式的左侧

  • 将数组扩展为指定的变量:

    a = engine.to_sym, @current_engine
    # => [ 1, 0 ]
    

  • 答案解释了如何使用并行赋值来交换值(如这里所示),但它有时以更普通的方式使用:
    a,b=1,2
    ,结果是
    a=>1,b=>2
    。有些人喜欢这样,有些人不喜欢。就我个人而言,我保留了用于Swap的并行任务。@CarySwoveland:注意得好,谢谢:)
    @current_engine = a[ 0 ]
    engine_was = a[ 1 ]