精华内容
下载资源
问答
  • 三目表达式

    千次阅读 2019-04-30 21:11:55
  • 由于Kotlin没有三目表达式这种写法,一般用if else就可以,但是写起来比较麻烦,于是我便写了个扩展函数,支持Boolean和表达式,感觉还行。如果大家有更好的方案,可以留言。 /** * * @author xunevermore * ...

    由于Kotlin没有三目表达式这种写法,一般用if else就可以,但是写起来比较麻烦,于是我便写了个扩展函数,支持Boolean和表达式,感觉还行。如果大家有更好的方案,可以留言。

    /**
     *
     * @author xunevermore
     * create on 2021/10/26 18:20
     * description:
     *
     */
    fun <T> Boolean?.judge(positiveValue: T, negativeValue: T) =
        if (this != null && this) positiveValue else negativeValue
    
    fun <T> Boolean?.judge(positiveValueProvider: () -> T, negativeValueProvider: () -> T): T =
        if (this != null && this) positiveValueProvider() else negativeValueProvider()
    
    
    private const val TAG = "BooleanJudgeExt"
    
    fun test() {
        var value: Nothing? = null
        val a = value.judge(1, 2)
        Log.i(TAG, "test:$a ")
    
        val b = value.judge({ true }, { false })
        Log.i(TAG, "test: $b")
    
        val x = 0
        val c = (x == 1).judge( "x is 1" ,  "x is not 1" )
        Log.i(TAG, "test: $c")
    
    }
    
    展开全文
  • 所以想到使用三目表达式,判断session域中的user是否为空,当为空时,跳转登录页面,不为空时跳转到书本详情页 问题代码1: <a href="${user==null?'login.jsp':'bookDetail.do?isbn=${list.isbn}'}"> 问题...

    问题描述:在jsp页面,我想用户退出之后,再点击主页的书本详情,跳转到登录界面
    所以想到使用三目表达式,判断session域中的user是否为空,当为空时,跳转登录页面,不为空时跳转到书本详情页

    问题代码1:

    <a href="${user==null?'login.jsp':'bookDetail.do?isbn=${list.isbn}'}">
    

    问题代码2:

    <a href="${user==null?'login.jsp':'bookDetail.do?isbn=<%= list.isbn%>}'}">
    

    问题代码3:

    <a href="${user==null?'login.jsp':'CheckUserServlet'}">
    

    分析:前两个代码的问题时EL表达式并没有执行,而是直接当做了字符串处理,第三个代码,想用servlet处理,当时要传递当前的书本编号参数,也需要动态获取,这三种方法都不可行。
    最后的处理方式:使用JSTL(即JSP标准标签库)中的if语句判断user是否存在

    <c:if test="${user!=null}">
    	<a href="bookDetail.do?isbn=${list.isbn}">
    </c:if>
    <c:if test="${user==null}">
    	<a href="login.jsp">
    </c:if>
    <img src="../img/goods/${list.isbn}/index.jpg" alt="" />
    </a>
    
    展开全文
  • Java 三目表达式中的NullPointerException问题背景问题思考找资料 背景 我们需要对接不同的基础系统。原来必填的字段。现在不一定有数据,变成了数据库默认值。也就产生了我们下面这个问题。 问题 Integer rank ...

    Java 三目表达式中的NullPointerException问题

    背景

    旧系统改造。

    问题

    Integer rank = bpo.getLocalRank() != null ? Ints.tryParse(bpo.getLocalRank()) : 0
    

    这段代码中。一眼看去,如果bpo.getLocalRank返回的空字符串,那么rank就会为null,没问题。

    思考

    但是运行一下,我们就发现报错了。

    Exception in thread "main" java.lang.NullPointerException
    

    根据前后代码分析,我们的bpo对象不可能为空。
    在这个基础上,分析表达式,NPE错误不可能从Ints.tryParse中产生。那么NPE从那里来的呢。
    想了下NPE错误只可能从Ints.tryParse(bpo.getLocalRank())中导致的。但是这个为什么会导致NPE错误呢。联合上下文。三目表达式,第3位参数位 为 primitive type 。是不是这个参数导致第二位参数的自动拆箱呢,是不是会和赋值表达式一样,存在默认类型转换。
    是不是验证一下。代码改成如下

    Integer rank = bpo.getLocalRank() != null ? Ints.tryParse(bpo.getLocalRank()) : Integer.valueOf(0);
    

    没报错。那么问题就定位了。

    找资料

    确定了原因。就去找文档,找 Java规范。链接 ^1
    中有一段描述 Numeric Conditional Expressions的。具体如下

    15.25.2. Numeric Conditional Expressions
    Numeric conditional expressions are standalone expressions (§15.2).
    The type of a numeric conditional expression is determined as follows:
    If the second and third operands have the same type, then that is the type of the conditional expression.
    If one of the second and third operands is of primitive type T, and the type of the other is the result of applying boxing conversion (§5.1.7) to T, then the type of the conditional expression is T.

    很明显。如果三目运算符,一个是基本类型,一个是the result of applying boxing conversion (§5.1.7) to T。那么结果就是 T,也就是int类型。也就触发了我们的自动拆箱。并导致报错。
    我们再反编译一下用jd-gui打开。看到类似如下代码。也得到了印证。

        Integer localInteger2 = Integer.valueOf("123".equals("123") ? localObject.intValue() : 0);
    

    反思

    • 好了。问题解决。这个问题反应的还是我们JVM知识缺乏。从表面觉得没问题。没有深入了解JVM机制。
    展开全文
  • 三目运算(三目表达式)是什么?

    万次阅读 2018-11-22 11:33:12
    三目运算符 https://baike.baidu.com/item/三目运算符
  • python 3 三元表达式(三目表达式)

    千次阅读 2019-01-10 12:14:32
    x= 50 y = 25 small = x if x&lt;y else y print(small) 输出结果:25
  • 三目表达式如何省略一个表达式

    千次阅读 2017-10-12 11:29:35
    三目表达式若想省略一个表达式, 可以用 null 代替 举例: public class HelloWorld { public static void main(String[] args) { // TODO Auto-generated method stub //System.out.println("HelloWorld");...
  • Python3中使用三目表达式

    千次阅读 2018-02-26 19:37:43
    python中如果想使用如下形式的三目表达式 int res = a &gt; b : a ? b; 则使用如下形式可实现: res = 条件成立语句 if 条件 else 条件不成立的语句 res = a if a &gt; b else b #条件放在了中间...
  • 三目表达式是一个表达式,它最后只能有一种数据类型,当两个类型不一样时会自动向上转型,而if-else不受此限制。 看下面代码: public class TrinocularTest { public static void main(String[] args) { System...
  • 三目表达式与if判断

    千次阅读 2017-08-22 09:52:05
    因为前辈在指导代码的时候建议将比较简单的if判断改成三目表达式,然后试了发现三目表达式蛮好用的,遂记录下来 根据自己的理解比较了一下: ~if判断~ if(判别式){ 结果1 }else{ 结果2 } ~三目表达式~ 判别...
  • Python and-or以及三目表达式语法

    千次阅读 2018-01-14 12:02:34
    Python中的and-or以及三目表达式语法 1.and 在python中,and自左向右扫描布尔表达式,如果所有值为真,则返回最后一个为真的表达式,如果为假,则返回第一个为假的表达式,例如: print(2 and 1 and 3) #这种...
  • 三目表达式的错误使用 问题描述: 使用三目表达式报错 map2.get(poll) == 1 ? map2.remove(poll) : map2.put(poll, map2.get(poll) - 1); 原因分析: @青衫白衣小黑炭 (来自q群大佬) 条件表达式不能单独...
  • c# 三目表达式

    2016-09-21 00:01:00
    W_User.User_Free = W_User.User_Free == true ? false : true; 转载于:https://www.cnblogs.com/mchuang/p/5891121.html
  • 如果条件a>b成立,那么输出结果true,如果不成立则输出结果为false boolean i=a>b?true:fales 如果a>b则i的输出值为true
  • 三目表达式的个人总结

    千次阅读 2018-07-25 19:31:50
    三目表达式的判断方法: a=(1&gt;2)?false:true 可以理解为 if(1&gt;2){ return false; }else{ return true; } 现在我们举一个例子 boolean b=true?false:true==true?false:true; 这个式子要分开看 ...
  • Python三目表达式

    2019-09-27 15:35:47
    python中没有其他语言中的三目表达式,不过有类似的实现方法 其他语言中,例如java的三元表达式是这样:h=a>b?变量1:变量2 在python中只有类似的替代办法,如果a>b的结果为真,h="变量1",如果为假,h="变量2" ...
  • python三目表达式

    2019-10-07 05:47:25
    myVar == 0 and 1 or 0 转载于:https://www.cnblogs.com/hont/p/5351586.html
  • 表达式Q ? A : B 在 Q 求值为 TRUE 时的值为 A ,在 Q 求值为 FALSE 时的值为 B 。 例如下面判断奇数偶数的例子: var numbuer = 5 ; if(numbuer%2!=0){ document.write("该数为奇数"); } else{ ...
  • {{user.companyName = item.companyName}} option> <option :value="item.companyId" v-else>{{item.companyName}}option> template> select> Vue使用v-if的三目表达式进行赋值 v-if="user.companyId == item....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,668
精华内容 11,467
关键字:

三目表达式