Project1

标题: 关于脚本中target的问题 [打印本页]

作者: 化螺耕    时间: 2014-2-22 17:38
标题: 关于脚本中target的问题
RT,如字面意思理解,target就是目标的意思,但是感觉自己对这个概念还是有点模糊。而且,在显示图片这里
  1.   def show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
  2.     @name = name
  3.     [url=home.php?mod=space&uid=27559]@origin[/url] = origin
  4.     @x = x.to_f
  5.     @y = y.to_f
  6.     @zoom_x = zoom_x.to_f
  7.     @zoom_y = zoom_y.to_f
  8.     [url=home.php?mod=space&uid=316553]@opacity[/url] = opacity.to_f
  9.     @blend_type = blend_type
  10.     @duration = 0
  11.     @target_x = @x
  12.     @target_y = @y
  13.     @target_zoom_x = @zoom_x
  14.     @target_zoom_y = @zoom_y
  15.     @target_opacity = @opacity
  16.     @tone = Tone.new(0, 0, 0, 0)
  17.     @tone_target = Tone.new(0, 0, 0, 0)
  18.     @tone_duration = 0
  19.     [url=home.php?mod=space&uid=124954]@Angle[/url] = 0
  20.     @rotate_speed = 0
  21.   end
复制代码
为什么我总感觉那个@x是多余的,直接@target_x = x.to_f不就好了嘛,为什么还要用个@x作为中间变量呢?跪求大神解释
作者: myownroc    时间: 2014-2-22 18:09
本帖最后由 myownroc 于 2014-2-22 19:52 编辑

参数x是按照传址的方式传递的
直接  .to_f会改变原有的x参数
给你两个函数你测试结果就知道了
一:
  1. def f(x)
  2.   return x ** 2
  3. end
复制代码
二:
  1. def f(x)
  2.   t = x
  3.   return t ** 2
  4. end
复制代码
最后p x 看看x是否会改变

作者: 化螺耕    时间: 2014-2-22 19:29
myownroc 发表于 2014-2-22 18:09
参数x是按照传址的方式传递的
直接  .to_f会改变原有的x参数
给你两个函数你测试结果就知道了

呃……我让x=1.1,p出来的结果都是1.21啊
作者: satgo1546    时间: 2014-2-22 19:33
LS纯属误导……
由于浮点数跟传地址和传值无关(永远传值),所以这里其实是用于移动图片用的变量,目测用于平滑移动。其中一组变量会在其他函数内改变。
作者: 化螺耕    时间: 2014-2-22 21:37
satgo1546 发表于 2014-2-22 19:33
LS纯属误导……
由于浮点数跟传地址和传值无关(永远传值),所以这里其实是用于移动图片用的变量,目测用 ...

看不大懂,能麻烦举个例子吗




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1