在
trait Expr
case class Number(n: Int) extends Expr
case class Sum(e1: Expr, e2: Expr) extends Expr
object CaseExample {
def eval(e: Expr): Int = e match {
case Number(n) => n
case Sum(e1, e2) => eval(e1) + eval(e2)
}
def main(args: Array[String]) {
println(eval(Sum(Number(1), Number(2)))) //> 3
}
}
Run Code Online (Sandbox Code Playgroud)
还有相当多的语法糖.我得到的case是隐式创建两个对象
object Number extends Expr {
def apply(n: Int) = new Number(n)
}
object Sum extends Expr {
def apply(e1: Expr, e2: Expr) = new Sum(e1, e2)
} …Run Code Online (Sandbox Code Playgroud) 我正在 Progress Release 11.6 中使用 appBuilder 和过程编辑器。
正如前面的一些问题中提到的,我经常遇到 appBuilder 的问题,不想打开文件,损坏它们(删除部分源代码),......,现在的原因之一似乎是程序的限制不能超过32K,包含评论。
起初我想“我们回到了石器时代吗? ”,请原谅我的反应。
但现在我开始认为我们完全滥用了整个概念,因此我想表达我对W文件、P文件和I文件的看法,请确认(或更正):
W 文件仅包含 GUI 定义,例如带有一些框架、按钮、填充字段等的表单,任何真正的编程都需要在 P 文件中完成。
P 文件包含真正的智能:其中详细说明了程序和功能,可以由其余 P 文件使用,或者最终由 W 文件使用。
I 文件只是用来包含一般行为。
让我举一个例子:
W 文件:
DEFINE VARIABLE combo_information VIEW-AS COMBOBOX /* with some information on the content, if this is static */
...
ON CHOOSE OF combo_information DO:
RUN very_large_procedure.
END.
...
{about.i} /* see here-after */
...
Run Code Online (Sandbox Code Playgroud)
P 文件:
PROCEDURE very_large_procedure:
DO /* a lot */
END.
Run Code Online (Sandbox Code Playgroud)
I 文件(about.i):
/* Describes the help-about …Run Code Online (Sandbox Code Playgroud) 我已经读过,回调会异步制作JavaScript.但我不确定我是否理解这个解释.这就是我得到的
回调函数允许我们异步执行操作,因为它们确保在加载下一行之前回调之前的行已完全完成.
真的吗?谢谢
我像这样重载了类query的方法:mysqli
class MySql extends \mysqli
{
function query(string $sql): ?MySqlResult // line #30
{
$result = parent::query($sql);
return new MySqlResult($result);
}
}
Run Code Online (Sandbox Code Playgroud)
在 PHP8.0 中这不是问题。但是,从 PHP8.1 开始,我现在收到此错误:
已弃用: 的返回类型
Repository\MySql\MySql::query($sql, $resultmode = null)应与 兼容mysqli::query(string $query, int $result_mode = MYSQLI_STORE_RESULT): mysqli_result|bool,或者#[\ReturnTypeWillChange]应使用该属性暂时抑制repository\src\MySql\MySql.php第 30 行中的通知
我知道如何修复错误 - 我可能最终会更改方法的名称,因为我想返回我自己的自定义对象。
问题
我正在寻找一个答案,从理论和面向对象的角度来捕捉这种变化的需要,也许使用语言理论,或者将其与其他语言进行比较。
为什么需要进行此更改?进行此更改的必要性或原因是什么?在扩展类时,有什么方法可以允许 PHP 中重载返回类型?
代码:
for(int i=0;i<5;){
i=i++;
printf("%d",i);
}
Run Code Online (Sandbox Code Playgroud)
上面的程序无限打印零,这怎么可能?有声明i=i++;。请解释为什么 的值i不增加。
asynchronous ×1
c ×1
callback ×1
javascript ×1
oop ×1
openedge ×1
php ×1
php-8.1 ×1
progress-4gl ×1
scala ×1