no_repeat?
方法是检查范围中的任何年份是否具有重复数字。我将它与def no_repeats(year_start, year_end)
no_repeat_years = [year_start..year_end].select { |year| no_repeat?(year) }
end
def no_repeat?(year)
numbers = year.split("")
numbers.each do |n|
if numbers.count(n) > 1
return false
end
end
return true
end
方法配对,检查个别年份。
no_repeats
当我尝试运行undefined method `split' for 1980..2000:Range (NoMethodError)
时,我收到以下错误:
/**
* This is a description
* @module someModule
*/
(function (exports) {
/**
* Returns true if something.
* @param {String} type
* @returns {boolean}
* @static
*/
var isSomething = function isSomething(type){
return true;
};
exports.isSomething = isSomething;
})(
//if exports exists, this is a node.js environment so attach public interface to the `exports` object
//otherwise, fallback to attaching public interface to the `window` object
(typeof exports === 'undefined') ?
window
: exports
);
为什么整个范围都会插入辅助功能?
答案 0 :(得分:2)
在第三行,您有[year_start..year_end]
。这不是你想要的。这样做是因为它创建了一个包含1个元素的数组:你的范围。所以这就等同于:
years = year_start..year_end
value = [years]
value.select do |year|
year.class # => Range
end
因此,您应该[year_start..year_end]
而不是(year_start..year_end)
。这不会创建数组,而是优先考虑范围,因此它仍然可以按预期工作(即#select
方法将在范围而不是year_end
上调用。)