【问题标题】:Pascal Exception帕斯卡异常
【发布时间】:2016-04-28 17:22:44
【问题描述】:

用 Pascal 写这样的表达式不合法吗:

b += c;  {Take whatever in b and add what in c to it, then assign it back to b}

或者你必须写

b := b + c;

我想知道顶部方法在 Pascal、Object 或 Delphi 中是否合法,或者您是否必须使用老式方法,例如底部方法。

【问题讨论】:

  • 您可以在 C/C++ 中执行此操作,但在 pascal 中不行。
  • 当你尝试它时会发生什么?编译器告诉你什么?在我看来,您可能比单击 并在此处写第一句话更快地弄清楚这一点。我们很乐意提供帮助,但您现在应该学会在没有我们的情况下不要完全无助。
  • 上次我在 delphi 程序中写了b += c;,编译器告诉我它是无效的......但也许它不知道正确的 Pascal 语法。
  • 为什么你认为这是正确的 Pascal 语法?
  • @MBo - 他们这样做:例如,用于将项目添加到集合(列表、数组、集合)的统一接口。当然,代价是潜在的混乱。在基于 C 的语言中,':=' 不会产生任何值,你可以a =b =c =d。所以基本上 Pascal 强制执行冗长,eine action - eine 语句。并牺牲了简洁简洁的速记。这就是 Delphi 中的 lambda 对样板文件如此肥胖以至于几乎不实用的原因

标签: delphi pascal


【解决方案1】:

你必须用旧方法来做

b := b + c;

这始终适用于普通变量和属性。

或使用:

Inc(b,c);

但是,如果b 确实是某个记录或对象的属性,Inc 将不起作用。

免费的 pascal 编译器 (fpc)​​ 确实允许在非 delphi 模式下使用这种语法,但 Turbo Pascal 和 Delphi 都不允许。

【讨论】:

    【解决方案2】:

    在 Delphi 或 Pascal 中没有这样的语法。不过你可以使用Inc

    Inc(b, c);
    

    RemObjects 的类似 Delphi 的 .Net 产品 Oxygene 允许使用 += 语法来订阅事件处理程序,但这与您在这里所做的任何事情都无关。

    【讨论】:

      【解决方案3】:

      pascal 没有这样的语法,如果你想创建加法运算,你可以使用 b:=b+c; 要么 inc(b,c);

      你可以在 c/c++ 中使用这个语法

      【讨论】:

        【解决方案4】:

        您有替换 b:=b+c 的 inc(b,c) 和替换 b:=b-c 的 dec(b,c)。

        如果您经常使用这些,我建议您编写模块并自己编写这些用于加法、减法、乘法和除法的程序。如果您愿意,可能有一种方法可以定义您的运营商,我不确定这一点,所以我希望有人可以向我澄清这一点。

        【讨论】:

        • 我查过了,你只是不能定义你的操作符。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多