我已获得以下 3 个功能。任何人都可以帮助我理解这些吗?我正在尝试使用 Qt 将应用程序移植到 C++,但我不了解这些功能。所以请帮助我!
提前致谢。
功能一:
def read_key
puts "read pemkey: \"#{@pkey}\"" if @verbose
File.open(@pkey, 'rb') do |io|
@key = OpenSSL::PKey::RSA.new(io)
end
end
功能二:
def generate_key
puts "generate pemkey to \"#{@pkey_o}\"" if @verbose
@key = OpenSSL::PKey::RSA.generate(KEY_SIZE)
# save key
File.open(@pkey_o, 'wb') do |file|
file << @key.export()
end
end
功能三:
def sign_zip
puts "sign zip" if @verbose
plain = nil
File.open(@zip, 'rb') do |file|
plain = file.read
end
@sig = @key.sign(OpenSSL::Digest::SHA1.new, plain)
end
最佳答案
上面的代码可能有两点让您感到困惑,如果弄清楚了,将有助于理解它。
首先,@verbose 和@key 是实例变量,C++ 程序员可能称之为“成员变量”。 puts 语句后面的“if @verbose”字面意思是仅当@verbose 为真时才执行puts。 @verbose 永远不需要声明为 bool 值——您只需开始使用它。如果它从未被初始化,它就是“nil”,计算结果为 false。
其次,do/end 部分是代码块。许多 Ruby 方法采用代码块并使用在这些管道字符中声明的变量来执行它。一个例子是“array.each do |s| puts s; end”,它可能看起来像“for(int i = 0; i < array.size();++i) { s = array[i]; puts (s); }"在 C++ 中。对于 File.open,|io|是打开的文件实例,“读取”是它的方法之一。
关于c++ - 我是 RUBY 的新手,我需要了解 3 个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4669283/