如何在 SketchUp 的函数外调用数组 Ruby
How to call an array outside of a function in SketchUp Ruby
我正在构建自定义十进制度 (DD) 到十进制分秒 (DMS) 函数以在 SketchUp 中使用 Ruby。下面是我的脚本。
arg1 = 45.525123
def DMS(arg1)
angle = arg1
deg = angle.truncate()
dec = (angle - angle.truncate()).round(6)
totalsecs = (dec * 3600).round(6)
mins = (totalsecs / 60).truncate()
secs = (((totalsecs / 60) - (totalsecs / 60).truncate()) * 60).round(2)
array = [deg, mins, secs]
end
DMS(arg1)
到目前为止一切顺利,如果您 运行 Ruby 中的这个脚本,您最终可能会得到一个数组,它为您提供
[45, 31, 30.44]
然后我尝试添加一行代码,以不同的名称分配该数组。这是带有额外行的新代码。
arg1 = 45.525123
def DMS(arg1)
angle = arg1
deg = angle.truncate()
dec = (angle - angle.truncate()).round(6)
totalsecs = (dec * 3600).round(6)
mins = (totalsecs / 60).truncate()
secs = (((totalsecs / 60) - (totalsecs / 60).truncate()) * 60).round(2)
array = [deg, mins, secs]
end
DMS(arg1)
bearingarray = array
但是,如果您 运行 第二个代码块,您最终会得到一个 [1, 2, 3] 的数组。
我的期望是我会在数组中得到完全相同的值,但名称不同。
出了什么问题?我应该怎么做才能解决它?
感谢您的帮助!
你的第二个代码块是错误的,如果你 运行 它你会得到 undefined local variable or method array for main:Object
.
您可能 运行 在交互式会话中编写代码,并且您之前已经定义了 array
,考虑到 array
是 DMS
函数的局部变量。
我会说你想做什么
arg1 = 45.525123
def DMS(arg1)
angle = arg1
deg = angle.truncate()
dec = (angle - angle.truncate()).round(6)
totalsecs = (dec * 3600).round(6)
mins = (totalsecs / 60).truncate()
secs = (((totalsecs / 60) - (totalsecs / 60).truncate()) * 60).round(2)
array = [deg, mins, secs]
end
bearingarray = DMS(arg1)
正在将 DMS
的输出分配给 bearingarray
我正在构建自定义十进制度 (DD) 到十进制分秒 (DMS) 函数以在 SketchUp 中使用 Ruby。下面是我的脚本。
arg1 = 45.525123
def DMS(arg1)
angle = arg1
deg = angle.truncate()
dec = (angle - angle.truncate()).round(6)
totalsecs = (dec * 3600).round(6)
mins = (totalsecs / 60).truncate()
secs = (((totalsecs / 60) - (totalsecs / 60).truncate()) * 60).round(2)
array = [deg, mins, secs]
end
DMS(arg1)
到目前为止一切顺利,如果您 运行 Ruby 中的这个脚本,您最终可能会得到一个数组,它为您提供 [45, 31, 30.44]
然后我尝试添加一行代码,以不同的名称分配该数组。这是带有额外行的新代码。
arg1 = 45.525123
def DMS(arg1)
angle = arg1
deg = angle.truncate()
dec = (angle - angle.truncate()).round(6)
totalsecs = (dec * 3600).round(6)
mins = (totalsecs / 60).truncate()
secs = (((totalsecs / 60) - (totalsecs / 60).truncate()) * 60).round(2)
array = [deg, mins, secs]
end
DMS(arg1)
bearingarray = array
但是,如果您 运行 第二个代码块,您最终会得到一个 [1, 2, 3] 的数组。
我的期望是我会在数组中得到完全相同的值,但名称不同。
出了什么问题?我应该怎么做才能解决它?
感谢您的帮助!
你的第二个代码块是错误的,如果你 运行 它你会得到 undefined local variable or method array for main:Object
.
您可能 运行 在交互式会话中编写代码,并且您之前已经定义了 array
,考虑到 array
是 DMS
函数的局部变量。
我会说你想做什么
arg1 = 45.525123
def DMS(arg1)
angle = arg1
deg = angle.truncate()
dec = (angle - angle.truncate()).round(6)
totalsecs = (dec * 3600).round(6)
mins = (totalsecs / 60).truncate()
secs = (((totalsecs / 60) - (totalsecs / 60).truncate()) * 60).round(2)
array = [deg, mins, secs]
end
bearingarray = DMS(arg1)
正在将 DMS
的输出分配给 bearingarray