c++ - 如何使用 Ruby 的 Enumerable .map 方法做一些类似于 C++ 中的 map 的事情

标签 c++ ruby enumerable

map(-30, -89.75, 89.75, 0, 360) 

我正在寻找这样的东西:

  • -30为输入值。
  • -89.75 到 89.75 是可能的输入值范围
  • 0 - 360 是要映射到的最终范围

有人告诉我有一种方法可以使用 http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-map 来做到这一点

.. 然而它并不明显!

最佳答案

如果我没理解错的话,我认为您只是想将一个范围统一映射到另一个范围。因此,我们只需要计算输入范围的距离,并返回输出范围的那一部分。

def map_range(input, in_low, in_high, out_low, out_high)
  # map onto [0,1] using input range
  frac = (input - in_low) / (in_high-in_low)
  # map onto output range
  frac * (out_high-out_low) + out_low
end

另外,我应该注意到 map 在 ruby​​ 中有一点不同的含义,更合适的描述可能是 transform

关于c++ - 如何使用 Ruby 的 Enumerable .map 方法做一些类似于 C++ 中的 map 的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13756596/

相关文章:

ruby - 如何枚举数组中的连续元素?

c# - 扩展 Enumerable.Range

ruby-on-rails - 在没有 :total_entries to improve a lengthy query 的情况下使用 will_paginate

ruby - 乘客:应用程序生成器服务器意外退出:连接关闭

c++ - 继承错误

c++ - 请求 ‘mCar’中的成员 ‘this’,非类类型 ‘owner* const’

ruby-on-rails - twilio 测试凭据不适用于发送短信‏ - 引发异常 "Resource not accessible with Test Account Credentials"

c# - LINQ:获取不在记录中的项目 - C#

c++ - 在 MSVC 的 Debug模式下分配给 std::future 时崩溃

c++ - 无法将 QButtonGroup buttonClicked 连接到仿函数