Kotlin中有多个变量

有没有办法链接多个让kotlin中的多个可为空的变量? fun example(first: String?, second: String?) { first?.let { second?.let { // Do something just if both are != null } } } 我的意思是,这样的事情: fun example(first: String?, second: String?) { first?.let && second?.let { // Do something just if both are != null } }

kotlin反映和vararg

我试图用kotlin替换Java,但是可变参数的传输有问题。 测试在Java中传递 public class ExampleUnitTest1 { @Test public void test() { a(1, 2); } public void a(Object… args) { b(args); } public void b(Object… args) { Class clazz1 = ExampleUnitTest1.class; try { Method method = clazz1.getMethod("add", Integer.class, Integer.class); method.invoke(this, args); } catch (Exception e) { e.printStackTrace(); } } public void add(Integer a, Integer b) { […]

用lambda参数记录kotlin

在log4j2中,我们有一个方便的功能,被描述为 // Java-8 style optimization: no need to explicitly check the log level: // the lambda expression is not evaluated if the TRACE level is not enabled logger.trace("Some long-running operation returned {}", () -> expensiveOperation()); 我试图在kotlin中使用它 log.debug("random {}", { UUID.randomUUID() }) 将打印 random Function0<java.util.UUID> 我们如何使用kotlin使用lambda参数记录? 或者我们如何明确地告诉科特林要调用什么方法?

kotlin中的懒惰列表?

我怎样才能以简单的方式实现Kotlin中的懒惰列表? (例如,整数懒惰列表)。 我一直在寻找官方文档,我一直在搜索,没有一致的结果。 也许我找到的最好的教程是这样的: 在这里输入链接描述 ,但是我不知道是否有更多的“科特林原生的方式”,或者我必须自己用我刚刚给出的链接来实现它。 我在Kotlin的官方博客上发现了以下内容,尽管我无法获得一个项目,例如整数[3] var i = 0 integers = iterate{i++} integers[3] // does not work integers drop 3 // works

Kotlin和歧视工会(总数类型)

Kotlin有什么像歧视工会(总和类型)? 什么是这个(F#)的惯用Kotlin翻译: type OrderMessage = | New of Id: int * Quantity: int | Cancel of Id: int let handleMessage msg = match msg with | New(id, qty) -> handleNew id qty | Cancel(id) -> handleCxl id

Kotlin中的uncheckedVariance?

Martin Odersky在“ 编译器是数据库”的演讲中提出了一个有趣的方差角落案例: class Tree[-T] { def tpe: T @uncheckedVariance def withType(t: Type): Tree[Type] } T被定义为是逆变的,因为将类型树( Tree[Type] )看作是一个无类型树( Tree[Nothing] )的子Tree[Type]是有用的,而不是相反。 通常,Scala编译器会抱怨T出现在tpe方法的返回类型中。 这就是为什么Martin用@uncheckedVariance annotion关闭编译器的原因。 这里是翻译成Kotlin的例子: abstract class Tree<in T> { abstract fun tpe(): T abstract fun withType(t: Type): Tree<Type> } 正如所料,Kotlin编译器抱怨T出现在“out”的位置。 Kotlin有类似于@uncheckedVariance东西吗? 还是有更好的方法来解决这个问题?

正则表达式仅在行首匹配字符

我正在尝试正则表达式。 我有一个有几个字段的大型机文件。 我有一个平面文件分析器,根据每行的前三个字母区分几种类型的记录。 如何写前三个字母为“CTR”的正则表达式? 提前致谢

kotlin和ArgumentCaptor – IllegalStateException

我有一个通过ArgumentCaptor捕获类参数的问题。 我的测试类看起来像这样: @RunWith(RobolectricGradleTestRunner::class) @Config(sdk = intArrayOf(21), constants = BuildConfig::class) class MyViewModelTest { @Mock lateinit var activityHandlerMock: IActivityHandler; @Captor lateinit var classCaptor: ArgumentCaptor<Class<BaseActivity>> @Captor lateinit var booleanCaptor: ArgumentCaptor<Boolean> private var objectUnderTest: MyViewModel? = null @Before fun setUp() { initMocks(this) … objectUnderTest = MyViewModel(…) } @Test fun thatNavigatesToAddListScreenOnAddClicked(){ //given //when objectUnderTest?.addNewList() //then verify(activityHandlerMock).navigateTo(classCaptor.capture(), booleanCaptor.capture()) var clazz = […]

与jmockit一起使用kotlin

我需要一些建议,使用kotlin使用jmockit。 (CUT)这是我的(Java)测试类: public final class NutritionalConsultant { public static boolean isLunchTime() { int hour = LocalDateTime.now().getHour(); return hour >= 12 && hour <= 14; } } (j.1)这是一个正在运行的Java测试类 @RunWith(JMockit.class) public class NutritionalConsultantTest { @Test public void shouldReturnTrueFor12h(@Mocked final LocalDateTime dateTime) { new Expectations() {{ LocalDateTime.now(); result = dateTime; dateTime.getHour(); result = 12; }}; boolean isLunchTime = […]

Kotlin扩展未解决的参考

我表示要学习kotlin,并试图通过kotlin指南创建一个项目。 在其中一个指南中说,我可以使用View的ID而不是findViewById 。 我已经导入了kotlin-android-extensions插件,并将其添加到gradle文件中,但仍然无法通过仅使用id来获取对象的引用。 有人能帮我吗? 我正在使用Android Studio 2.3和Kotlin版本1.1.2-5。 这是我的代码: 主要的gradle文件 buildscript { ext.kotlin_version = "1.1.2-5" repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" } } 应用程序gradle文件 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 25 buildToolsVersion "25.0.0" defaultConfig { applicationId ".kotlintodoapp" minSdkVersion 15 targetSdkVersion 25 versionCode 1 […]