簡體   English   中英

我如何使用|將多個參數傳遞給Ruby方法。

[英]How do I pass multiple arguments to a Ruby method using |

我看到了該方法獲取參數的方式,並想知道如何復制它。

Ruby / OpenGL:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

我嘗試了這個:

def my_method(*args)
    puts args
end
my_method(0 | 1) #=> 1

但這行不通。 感謝您的閱讀!

鏈接查看方法。

| 位或參數。 GL_COLOR_BUFFER_BITGL_DEPTH_BUFFER_BIT是積分常數( 0x000040000x00000100 ,分別地),並且該操作的結果為0x00000500 這就是傳遞給glClear -一個數字,而不是多個參數。

可以使用& (位與)運算符從整數中挑出位。 例如

WRITE = 1
READ = 2
FORCE = 4
def my_method(code)
  puts "write" if code & WRITE != 0
  puts "read" if code & READ != 0
  puts "force" if code & FORCE != 0
end

my_method(READ | FORCE)
# => read
# => force

這在Ruby中不是很常見,因為我們有更好和更清晰的方式來做類似的事情(例如,可能會說my_method(:read, force: true)更清晰,並且使用起來肯定更簡單)。 但是,這在C語言中是非常標准的,而Ruby OpenGL在C函數中是很薄的包裝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM