任务
我想每个人都喜欢自动代码生成并节省工作时间。您白天必须创建许多类和成员,而又不想getters
手动创建所有这些类和成员。
任务是编写一个程序或函数,该程序或函数getters
将为您自动为所有类成员生成。
输入
在我们的语言中,对象非常简单。类和成员的名称必须以字符开头,[a-zA-Z]
并且只能包含字符[a-zA-Z0-9]
。这是一个例子:
class Stack {
public overflow;
protected trace;
private errorReport;
}
输出
这是基于给定示例的有效输出:
class Stack {
public overflow;
protected trace;
private errorReport;
public function getOverflow() {
return this->overflow;
}
public function getTrace() {
return this->trace;
}
public function getErrorReport() {
return this->errorReport;
}
}
吸气剂
getter
方法的要求是:
- 函数名称必须
get
以字母开头,后跟带有大写字母首字母的成员名称。 - 该函数没有参数。
- 要返回变量,请使用
return this->memberName;
。 getters
和setters
(请参阅奖金)必须分组并且必须在所有变量声明之后。
例:
private value1;
private value2;
public function getValue1() { return this->value; }
public function setValue1(value) { this->value = value; }
public function getValue2() { return this->value; }
public function setValue2(value) { this->value = value; }
要求
- 创建一个程序或函数。
- 输入可以来自STDIN,命令行参数,函数参数,文件等。
- 从简单
return
值到文件或写入STDOUT的任何输出格式都是可接受的。 - 输入和输出不需要使用空格,换行符,制表符等格式。这是有效的输入:
class A{protected a;}
。 - 您可以假定输入有效,并且您的程序也可以处理意外的输入。
奖金
您可以通过为每个功能提取30%的资源来减少原始字节数的10%:
答:您的程序可以处理新添加的变量,并且getters
仅添加缺少的变量(public function getB() { return this->b; }
在这种情况下):
class A {
public a;
public b;
public function getA() { return this->a; }
}
B:您的程序还会生成setters
:
class A {
public a;
public getA() { return this->a; }
public setA(a) { this->a = a; }
}
C:您的程序可以处理静态成员:
class A {
public static c;
public static function getC() { return this->c; }
}
这就是代码高尔夫–以字节为单位的最短答案将获胜。不允许出现标准漏洞。
3
这是我的第一个问题-一个不太难的问题。希望你喜欢。感谢MartinBüttner在Sandbox中提供有用的提示。
—
insertusername此处为2015年
每个输入只会有一个类别吗?
—
Conor O'Brien 2015年
当同时支持的奖金
—
FryAmTheEggman 2015年
A
,并B
有干将应该物品,但没有制定者,在输出setter方法?
@FryAmTheEggman这是一个很好的问题。我想说的是,对于奖金B,您可以假定输入是完整的,因此,如果有一个吸气剂,那么也会有一个二传手。
—
insertusername此处为2015年
允许
—
尼尔
this
在static
访问器中引用哪种语言?