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

标签 c++ ruby qt ssl openssl

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

相关文章:

c++ - 使用 libMallocDebug 调试内存泄漏

c++ - 是否可以将 unique_ptr 存储在 QPairs 的 QList 中?

c++ - drawtext 在 Qt 中不起作用

ruby-on-rails - Rails 使用 gitbash 和 ruby​​ 安装程序。未找到rails命令

ruby-on-rails - 使用 RSpec 计算页面上的链接

c++ - 无法连接来自基类的信号

c++ - 复制构造函数会在这里工作吗?

c++ - 这个 "new"语法是什么意思?

c++ - WORD 的 cmpxchg 比 BYTE 快

ruby - redhat 上的 Yaml 解析问题