Groovy:if-else的正确用法

Groovy:if-else的正确用法,groovy,Groovy,我有一个groovy代码,它本身运行良好: def msg = "$evt.displayName was locked7 ${userName ? "by " + userName + " " : ""}$lockMode" // Default message to send 当我把它放在这个简单的if-else块中时,它根本不起作用(第一个条件和else条件都不起作用) 我的代码中有错误吗?如果在If或else条件之后有单行语句,则可以使用If..else语句而不使用{},对于多

我有一个groovy代码,它本身运行良好:

    def msg = "$evt.displayName was locked7 ${userName ? "by " + userName + " " : ""}$lockMode" // Default message to send
当我把它放在这个简单的if-else块中时,它根本不起作用(第一个条件和else条件都不起作用)


我的代码中有错误吗?

如果在If或else条件之后有单行语句,则可以使用If..else语句而不使用{},对于多个语句,必须使用大括号{}

    def msg = ""
    int i = 999
    if (i == 999) 
       msg = "$evt.displayName was locked via One Touch" // Default message to send
    else 
       msg = "$evt.displayName was locked7 ${userName ? "by " + userName + " " : ""}$lockMode" // Default message to send

    println "MESSAGE: "+msg

有关您的问题的更多信息

  • def
    if或
    else
    外部不起作用时
    内部的变量(您的问题场景)
  • 使全局
    def
    无处不在(wkt)
  • 您可以在全局中使用变量,即使不使用
    def
    它们,如下所示的代码。
    代码:
  • 不含def味精

    int i=999
    if (i==999)
    msg = "$evt.displayName was locked via One Touch" // Default message to send
    else 
    msg = "$evt.displayName was locked7 ${userName ? "by " + userName + " " : ""}$lockMode" // Default message to send    
    println "MESSAGE: "+msg
    

    您所说的不起作用的问题/错误是什么?没有错误。它什么都不做。执行将在if或else中进行?当我从if-else语句中使用它并打开锁时,我会收到一个推送通知,但当它在语句中时不会发生任何事情。这似乎不完整代码,“def msg”应该是全局变量谢谢。所以def不能放在if else语句中?是的,因为它不会在块之外解析谢谢。问题在于def,而不是大括号(谢谢你的回答:)
    int i=999
    if (i==999)
    msg = "$evt.displayName was locked via One Touch" // Default message to send
    else 
    msg = "$evt.displayName was locked7 ${userName ? "by " + userName + " " : ""}$lockMode" // Default message to send    
    println "MESSAGE: "+msg