gpt4 book ai didi

c++ - 我是 RUBY 的新手,我需要了解 3 个函数

转载 作者:行者123 更新时间:2023-11-28 01:08:47 26 4
gpt4 key购买 nike

我已获得以下 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com