【问题标题】:Porting Ruby to Python将 Ruby 移植到 Python
【发布时间】:2020-01-24 06:08:45
【问题描述】:

我正在将一块 Ruby 移植到 Python。除了以下代码,我已经移植了大部分代码。我真的不知道它的作用。

变量 rest 将是一个代表电话号码的字符串。它只是真正的

country_handler = splitter_mapping[i][presumed_cc]

这让我感到困惑。我意识到我可能可以在 python 中使用 kwargs,但我不太确定。

有什么想法吗?

module Phony

  class CountryCodes

    attr_reader :splitter_mapping

    def split_cc rest
      presumed_cc = ''
      1.upto(3) do |i|
        presumed_cc << rest.slice!(0..0)
        country_handler = splitter_mapping[i][presumed_cc]
        return [country_handler, presumed_cc, rest] if country_handler
      end
      # This line is never reached as CCs are in prefix code.
    end

【问题讨论】:

  • 看起来你从一个字符串开始,它试图找到存在于拆分器映射中的那个字符串的前缀(长度为 1 到 3)(这似乎是国家代码的哈希数组到某种值,按国家代码的长度排列)。不知道为什么
  • 抱歉错过了 splitter_mapping 定义源文件可以在这里找到 - github.com/floere/phony/blob/master/lib/phony/country_codes.rb

标签: python ruby porting


【解决方案1】:

嗯,从代码和 Frederick Cheung 的评论来看,我认为翻译应该是这样的:

def slit_cc(rest):
    for i in range(1, 4): # country_code size
        presumed_cc = rest[0:i]
        country_handler = splitter_mapping[i].get(presumed_cc):
        if country_handler:
            return [country_handler, presumed_cc, rest]

    return None # shouldn't happen

splitter_mapping 似乎是一本字典。第一级键是 country_code 大小(字符串长度),第二级键是国家代码。这些值似乎是一个国家/地区的电话拨号前缀。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 2019-08-20
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    相关资源
    最近更新 更多