我对Ruby很新。我上大学,只做了一个涵盖常规c的编程课程。我上课的最后一个项目是一个slop拦截项目,这很简单,但我必须使用函数来做所有事情,例如:
#include <stdio.h>
#include <math.h>
int get_problem(int *choice){
do {
printf("Select the form that you would like to convert to slope-intercept form: \n");
printf("1) Two-Point form (you know two points on the line)\n");
printf("2) Point-slope form (you know the line's slope and one point)\n");
scanf("%d", &*choice);
if (*choice < 1 || *choice > 2){
printf("Incorrect choice\n");}
}while (*choice != 1 && *choice !=2);
return(*choice);
}
...
int main(void);
{
char cont;
do {
int choice;
double x1, x2, y1, y2;
double slope, intercept;
get_problem (&choice);
...
我还有几个函数可以完成整个程序。我得到了一份新工作,我需要开始学习Ruby,所以对于我的第一个项目,我想把这个程序转换成Ruby,现在我只能摆脱这些函数,只需运行它而不需要方法或过程。我想知道是否可以做同样的事情,定义一个方法,然后在不给出输入的情况下调用方法,但是返回存储在方法中的变量。是否可以使用方法或过程。以下是我到目前为止使用proc的一些内容。
get_problem = Proc.new {
begin
puts "Select the form that you would like to convert to slope-intercept form: "
puts "1) Two-Point form (you know two points on the line)"
puts "2) Point-slope form (you know the lines slope and one point)"
choice = gets.chomp.to_i
if (choice < 1 || choice > 2)
puts "Incorrect choice"
end
end while (choice != 1 && choice !=2)
}
....
begin
get_problem.call
case choice
when 1
get2_pt.call
display2_pt.call
slope_intcpt_from2_pt.call
when 2
get_pt_slope.call
display_pt_slope.call
intcpt_from_pt_slope.call
现在我知道我可能错了,但我想我会试一试。在我有
之前,我把它作为方法def get_problem(choice)
....
end
....
get_problem(choice)
....
我缺少什么基本的东西?如您所见,我在c中使用了指针,并且必须在main中初始化变量。
感谢您抽出宝贵时间帮助我。 罗伯特
答案 0 :(得分:4)
你不能在Ruby中传递指向变量的指针,但我认为你不需要这样做来完成你想要做的事情。试试这个:
def get_problem
puts "Select the form that you would like to convert to slope-intercept form: "
puts "1) Two-Point form (you know two points on the line)"
puts "2) Point-slope form (you know the lines slope and one point)"
loop do
choice = gets.chomp.to_i
return choice if [1, 2].include? choice
STDERR.puts "Incorrect choice: choose either 1 or 2"
end
end
choice = get_problem
puts "The user chose #{choice}"
这定义了一个方法get_problem
,它循环直到用户选择1
或2
,并返回他们选择的数字,您可以将其存储在顶级变量{{1 }}