Kotlin分区命令无法正常工作

时间:2018-08-22 18:03:17

标签: kotlin

我正在使用Kotlin插件的“ 1.2.60”版本。从文档中可以看出,分区应基于某些谓词拆分集合。但是,当我尝试它时,它的结果并没有成对出现。让我向您展示发生了什么以及我尝试过的事情:

val(found,notFound) = "abcd".partition { "abcdef".contains(it)}

我希望在这里我能找回科特林配对。第一个是“ abcd”,我希望第二个是“ ef” 我正在尝试做的是,如果任何字符不在一个字符串中,则应将其分开。因此,由于“ ef”不在“ abcd”中,因此应进行分区。

需要明确的是,我期望found = "abcd" , notFound = "ef"

但是当我运行此代码时,我得到以下信息:found="abcd" ,notFound=""

为什么notFound为空,我在做什么错?你们可以尝试一下并让我知道吗?

如果我们选中the docs,则表示该分区命令应按谓词进行分割:

  

将原始字符串拆分为成对的字符串,其中第一个字符串包含谓词为true的字符,而第二个字符串包含谓词为false的字符。

3 个答案:

答案 0 :(得分:1)

您交换了参数。尝试

<xsl:when test='not (@Source = $targetFile)'>

您将获得预期的结果。

答案 1 :(得分:1)

该分区将应用于"abcd"。因此,此字符串被分成一对。
"abcdef".contains(it)是始终返回true的谓词。
因此,结果是found的整个分区字符串,而notFound的结果则没有。
对于提出Todd和leonardkraemer的解决方案,我不确定这是您所需要的。
例如:

val(found, notFound) = "abcdefa".partition { "abcd".contains(it) }

返回:

found = abcda
notFound = ef

这是您期望的吗?

答案 2 :(得分:1)

我认为您只是把弦向后倾斜。

我可以通过以下方式获得所需的结果:

val (found, notFound) = "abcdef".partition { "abcd".contains(it) }