我正在重构一个跳棋程序,我试图将玩家移动请求(例如"3,3,5,5"的形式)处理成一个int数组.我有以下方法,但它不像我所知的那样感觉像Ruby一样:
def translate_move_request_to_coordinates(move_request)
return_array = []
coords_array = move_request.chomp.split(',')
coords_array.each_with_index do |i, x|
return_array[x] = i.to_i
end
return_array
end
Run Code Online (Sandbox Code Playgroud)
我用它进行了以下RSpec测试.
it "translates a move request string into an array of coordinates" do
player_input = "3, 3, 5, 5"
translated_array = @game.translate_move_request_to_coordinates(player_input)
translated_array.should == [3, 3, 5, 5]
end
Run Code Online (Sandbox Code Playgroud)
测试通过,但我认为代码非常难看.任何帮助,将不胜感激.谢谢.
史蒂夫
我正在进行一个checkers实现,我有几十个容易测试的方法,但我不知道如何测试我的主#play_game方法.我的大多数方法都很容易确定输入和输出,因此很容易测试,这种方法是多方面的,并且实际上没有容易辨别的输出.这是代码:
def play_game
puts @gui.intro
while(game_over? == false)
message = nil
@gui.render_board(@board)
@gui.move_request
player_input = gets
coordinates = UserInput.translate_move_request_to_coordinates(player_input)
message = MoveCheck.move_validator(coordinates[0], coordinates[1], coordinates[2], coordinates[3])
puts message unless (message.nil? or message == "jumping move")
if(message == nil or message == "jumping move")
@current_player = switch_player unless (message == "jumping move" and jump_available? == true)
end
end
puts @gui.display_game_ending_message
end
Run Code Online (Sandbox Code Playgroud)
那么,如何进行测试(使用RSpec的),或者我应该不用担心,真正对我,否则全面的测试?
我想将一大组标识符从小写更改为大写.我有一个文件,其中包含以(以数百左右)开头的唯一标识符q_.我构造了一个定义这个匹配的正则表达式:(q_\w*)现在我想应用~命令使它们全部为大写(它们目前是小写的).我觉得VIM更有能力做到这一点,但我的技能还没有,你能帮忙吗?
看来Qunit测试方法不可用,即使我很确定我正确地导入它们.
我收到以下错误:
unit/models/friend-test.js: line 11, col 3, 'ok' is not defined.
unit/models/friend-test.js: line 17, col 3, 'equal' is not defined.
unit/models/friend-test.js: line 23, col 3, 'equal' is not defined.
unit/models/friend-test.js: line 31, col 3, 'equal' is not defined.
unit/models/friend-test.js: line 32, col 3, 'equal' is not defined.
Run Code Online (Sandbox Code Playgroud)
我有这个测试文件unit/models/friend-test:
import Ember from 'ember';
import { moduleForModel, test } from 'ember-qunit';
moduleForModel('friend', 'Friend', {
needs: ['model:article']
});
test('it exists', function() {
var model = this.subject();
ok(model);
});
test('fullName concats first …Run Code Online (Sandbox Code Playgroud) 我是构建rails应用程序的第一部分,我无法获得命令
rails server
Run Code Online (Sandbox Code Playgroud)
工作,或任何其他rails命令.每当我尝试rails命令时,我都会得到这样的帮助屏幕:
$rails server
Usage:
rails new APP_PATH [options]
Options:
-r, [--ruby=PATH] # Path to the Ruby binary of your choice # Default: /home/sgallagher/.rvm/rubies/ruby-1.9.2- p290/bin/ruby
-b, [--builder=BUILDER] # Path to a application builder (can be a filesystem path or URL)
-m, [--template=TEMPLATE] # Path to an application template (can be a filesystem path or URL)
[--skip-gemfile] # Don't create a Gemfile
[--skip-bundle] # Don't run bundle install
-G, [--skip-git] # Skip Git ignores and keeps
Run Code Online (Sandbox Code Playgroud)
等等(无论我输入什么命令,它都给我相同的"rails new"命令)...
关于我的系统中可能缺少的内容或为什么这些命令没有响应的任何想法?谢谢 …
我正在尝试使用以下方法构建哈希:
hash = {}
strings = ["one", "two", "three"]
array = [1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
所以我最终得到:
hash = { "one" => [1, 2] ,
"two" => [3, 4] ,
"three" => [5, 6] }
Run Code Online (Sandbox Code Playgroud)
我试过了:
strings.each do |string|
array.each_slice(2) do |numbers|
hash[string] = [numbers[0], numbers[1]]
end
end
Run Code Online (Sandbox Code Playgroud)
但那会产生:
hash = { "one" => [5,6] , "two" => [5,6], "three" => [5,6] }
Run Code Online (Sandbox Code Playgroud)
我知道为什么会这样做(嵌套循环),但我不知道如何实现我正在寻找的东西.
我想要为10位数字预先格式化一个电话号码文本字段,如下所示(管道不包括在内,只是分隔字段):
|( ) - |
Run Code Online (Sandbox Code Playgroud)
并使用户输入的数字适当填写
|(804) 479-1832|
Run Code Online (Sandbox Code Playgroud)
我找到了一个很好的格式正确的脚本,因为这里输入了数字,但还没有提供预先格式化的结构.
是否有一个简单的库或链接?谢谢.
在Ruby中,我有一个数组:
[1, 1, 1, -1, -1, 1, -1, -1]
Run Code Online (Sandbox Code Playgroud)
我想得到:
[-1, -1, -1, 1, 1, -1, 1, 1]
Run Code Online (Sandbox Code Playgroud)
我确信Ruby有一个简单的单行解决方案,但它现在逃脱了我.
不知道这里发生了什么,或者在这种情况下可能是整数.这是代码:
def build_array_from_file(filename)
contents = []
File.read(File.expand_path('lib/project_euler/' + filename), 'r') do |file|
while line = file.get
contents << line
end
end
contents
end
Run Code Online (Sandbox Code Playgroud)
filename是一个字符串,我已经检查以确保路径有效.
有什么想法吗?谢谢.
我有一句话:
contact.psu_code = row[:psu_code] unless row[:psu_code].blank?
Run Code Online (Sandbox Code Playgroud)
我想替换psu_code,比方说contact_disposition,像:
contact.contact_dispositon = row[:contact_disposition] unless row[:contact_disposition].blank?
Run Code Online (Sandbox Code Playgroud)
它只能在我所在的单行中替换,没有确认.我知道,%s/orig/sub但这很麻烦.