来自Kotlin文档:
如果一个函数没有返回任何有用的值,那么它的返回类型是Unit。Unit是只有一个值的类型- Unit.VALUE。该值不必显式返回:
fun printHello(name : String?) : Unit {
if (name != null)
print("Hello, $name!")
else
print("Hi there!")
// We don't need to write 'return Unit.VALUE' or 'return'
我对Kotlin很陌生。我看了Kotlin的源代码,看到了这个原型:
public inline fun <S, T : S> Iterable<T>.reduce(operation: (acc: S, T) -> S): S
我知道运算是一种方法,'acc‘是它的参数之一,'acc’是S型的,而运算的返回值是S型的,但是,参数列表中的T是什么意思呢?它的论点在哪里?
我正在将我的kotlin版本更新为1.0.0-beta-2423,我所做的只是更新相关依赖项的版本号。但是当我运行assembleDebug任务时,它会抱怨这个错误。
:app:transformClassesWithDexForDebug
Uncaught translation error: com.android.dx.cf.code.SimException: expected type java.lang.Object but found int
Uncaught translation error: com.android.dx.cf.code.SimException: expe
我想用另一种字体制作一种字体。我想做的是:
val font : Font = this.label.getFont();
val attributes : Map<TextAttribute, Any> = font.getAttributes();
attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
this.label.setFont(font.deriveFont(attributes));
但是,Kotlin编译器在行中抱怨:
val attributes : Map<TextAt
我不认为我的头衔会更令人困惑。我正在将Kotlin集成到一个现有的Java项目中。我有一个基本定义如下的Java类:
class EntityBase {
private Long id;
public EntityBase() { }
public EntityBase(Long id) { this.id = id; }
}
然后,我定义了一个类似于这样的Kotlin数据类,并且我试图使用同伴方法从DTO中水合物化这个对象,但是我不能通过创建对象来从这个方法访问EntityBase.id:
data class Thing(
val name: String,
如果您在Kotlin中访问List<[Some Type]>类型的Java值,您将得到(Mutable)List<[Some Type]!>!类型。
例如:
Java代码:
public class Example {
public static List<String> getList() {
return Arrays.asList("A", "B", "C");
}
}
Kotlin代码:
val list = Example.getList()
// list is of
我正在学习Kotlin,我编写了以下代码,并得到了一个编译错误。
有什么解决办法吗?
class CommonResponse<T>(
var result: Result, var data: T?, var message: String?, var errorCode: String?
) {
companion object {
fun <T> success(): CommonResponse<*> {
return CommonResponse(Result.SUCCESS, null,
我知道这个问题:
但它没有给出我需要的答案。
假设我的安卓项目有3个库模块A、B和C。这三个库都使用一个共同的依赖项,比如D1,其中D1是像Dagger、Room等库。
现在,我不是将D1添加到这三个项目中,而是考虑将D1添加到项目级build.gradle中。
我试着这样做,但它给出的错误如下:
Could not find method implementation() for arguments [directory 'libs'] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.D
我跟随Get started with Kotlin/Native using the command-line compiler,下载了kotlin-native-linux-1.5.10.tar.gz,并将其bin添加到系统的PATH中。现在which kotlinc-native返回TRUE值。 但是当我尝试kotlinc-native hello.kt -o hello时,得到这个错误: ~/.konan/dependencies/clang-llvm-8.0.0-linux-x86-64/bin/clang++: error while loading shared librari
Kotlin有类似于区分联合(sum类型)的东西吗?这个(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中的数据和对象类之间有什么区别,每个类的目的是什么?
data class User(val name: String, val age: Int)
和
object user {
val name = ""
fun printName(name: String) = "Hello, $name!"
}
我试图在Kotlin失败中为ConcurrentHashMap添加一个键值。编译器告诉我:No set method providing array access。
class MysqlDataProviderProxy() {
private val NULL: Any = Object()
var unionMaps: Map<Long, Any> = ConcurrentHashMap()
fun init() {
unionMaps[1] = NULL // No set method providing array acces
今天,每当我尝试gradle同步我的项目时,我都会收到错误Unable to load class 'kotlin.collections.CollectionsKT' (如图片所示)。我找不到关于这个错误的任何东西,唯一的解决方案似乎是禁用Intellij上的kotlin插件。我的一些项目没有kotlin,但其他项目有(没有kotlin的项目在尝试同步时也会抛出这个错误),所以这不是可行的选择。
有谁知道这可能是什么吗?
我很难理解为什么Java HashMap与Kotlin中的Map不兼容:
val map : java.util.Map<Int, Int> = java.util.HashMap<Int, Int>()
// ERROR: Type mismatch
,这是一个bug,还是故意强制作为Kotlin中的错误??
以下是Java到Kotlin编译器的第二个示例。看看这个Java示例文件:
public class Test {
public static void main(String[]
在app-level gradle文件中 implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 在哪里可以找到kotlin_version的值? 当我尝试添加以下依赖项时 implementation "com.android.billingclient:billing:$billingVersion" 错误:Could not get unknown property 'billingVersion' for object of type
我正在使用Kotlin对Android进行一些全局API解析器的实验(检查网络连接、调用API和通过一个源调用返回格式化数据)&在某个时候,我必须创建一个通用类型的object,如下所示,当在第一行(如Type parameters are not allowed for objects )发现编译错误时,我不得不创建一个泛型类型的Type parameters are not allowed for objects。
object RestApiParser<T> // ERROR(mark under T): Type parameters are not allowe