当前位置: 首页 > 知识库问答 >
问题:

LocalDateTime扩展函数和智能转换

胡玉书
2023-03-14

我尝试为LocalDateTime

以下是我的尝试:

fun LocalDateTime.isNotBefore(other: ChronoLocalDateTime<*>) = !isBefore(other)

问题是IntelliJ抱怨无法智能转换mycurTime变量(这是valLocalDateTime?

isNot之前(curTime)会有一条红色的弯弯曲曲的线,并抱怨它不能智能投射。所以我必须使用!!

如果你不能复制它,不要担心,我有很多代码——这些是重要的部分。

不同之处在于,像isBy()这样的常规LocalDateTime方法不需要此位置中的Smart cast。

这意味着我没有在扩展函数中正确实现一些东西。

有人知道我如何修复扩展函数,这样我就不需要使用


共有1个答案

金成济
2023-03-14

如果您仔细查看isBy签名,它期望ChronoLocalDateTime

如果你改变你的扩展函数接受null able它将以同样的方式工作。

fun LocalDateTime.isNotBefore(other: ChronoLocalDateTime<*>?) = !isBefore(other)

 类似资料:
  • 在针对PHPCMS V9做二次开发的时候,您可以自定义一些全局函数且不影响以后官方升级 您自定义的文件请放置于该文件中 phpcms\libs\functions\extention.func.php或者以.func.php格式命名,放置于如下目录中 phpcms\libs\functions\autoload

  • 问题内容: 可以扩展Swift函数的功能吗?我想在程序中的每个print()函数上附加一个字符,而不必创建全新的函数并重命名print()的每个实例。是否可以创建将在每个打印实例后附加“ *”的扩展名? 这样做的目的是创建一种清除XCODE添加到调试器中的所有额外信息的方法。我使用打印语句来检查代码不同部分的进度和成功,但是XCODE在几秒钟内填写了数千行多余信息,这些信息很快掩盖了我的特定语句。

  • 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 function log(x, y) { y = y || 'World'; console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // He

  • ES6 的变量声明 ES6 中新增了 let 和 const 来定义变量: var:,ES5 和 ES6中,定义全局变量(是variable的简写)。 let:定义局部变量,替代 var。 const:定义常量(定义后,不可修改)。 var:全局变量 看下面的代码: { var a = 1; } console.log(a); //这里的 a,指的是

  • SDK对外开放了一个可自定义的协议NtalkerChatDelegate,如果客户想进行自定义实现接口,必须遵守此协议,初始化小能类的时候设置其delagate为实现代理接口方法的类,然后实现相应的接口。其中提供了以下几个接口: 深度自定义控件接口,详细调用细节,请参照demo。 一、自定义消息发送 二、查询历史咨询列表 三、设置超媒体自定义参数 四、+号功能区的扩展功能 五、商品条自定义 六、设

  • 一、发送文本消息到聊窗内 二、返回按钮的点击监听 三、结束会话按钮的点击监听 四、超媒体点击事件的监听 五、+号功能区的扩展功能 六、商品条自定义 七、导航栏自定义