我想尽可能简洁地(但清楚地)将 a 转换List<Triple<String, String, String>为 a Triple<List<String>, List<String>, List<String>>。
例如,假设执行转换的方法被调用turnOver,我希望:
val matches = listOf(
Triple("a", "1", "foo"),
Triple("b", "2", "bar"),
Triple("c", "3", "baz"),
Triple("d", "4", "qux")
)
val expected = Triple(
listOf("a", "b", "c", "d"),
listOf("1", "2", "3", "4"),
listOf("foo", "bar", "baz", "qux")
)
matches.turnOver() == expected // true
Run Code Online (Sandbox Code Playgroud)
如何编写简洁、清晰且可能具有turnOver功能性的函数?
可以使用 Arrow-Kt,我已经将其作为项目依赖项。
monads functional-programming monad-transformers kotlin arrow-kt
我正在尝试使用 Kotlin 协程而不是传统的 Java 线程来执行后台操作:
我从这个链接中了解到,它工作正常
val job = launch {
for(file in files) {
ensureActive() //will throw cancelled exception to interrupt the execution
readFile(file)
}
}
Run Code Online (Sandbox Code Playgroud)
但我的情况是我有一个非常复杂的 readFile() 调用函数,我如何检查该函数内的作业是否处于活动状态?
val job = launch {
for(file in files) {
ensureActive() //will throw cancelled exception to interrupt the execution
complexFunOfReadingFile(file) //may process each line of the file
}
}
Run Code Online (Sandbox Code Playgroud)
我不想在此协程范围内复制函数的 impl 或将作业实例作为参数传递给该函数。处理此案的官方方式是什么?
非常感谢。
我正在尝试android.service.wallpaper.WallpaperService.Engine在 Kotlin 中扩展类,但出现“未解析的引用”错误:
即使它在上面显然是导入的。
有没有什么办法解决这一问题?
概述: 该应用程序处理用户信息的基本 CRUD 功能。
问题:
从预先填充的 H2 数据库读取用户详细信息时,我在使用BeanPropertyRowMapper. 映射器无法初始化 User 实例,因为它无法使用数据类的默认构造函数。
数据类:
存储库:
错误:
Caused by: java.lang.IllegalArgumentException: No argument provided for a required parameter: parameter #0 id of fun <init>(kotlin.String, kotlin.String, kotlin.String, kotlin.String, java.util.Date): org.chrysalis.userservice.model.User
Run Code Online (Sandbox Code Playgroud)
提供特定的行映射器可以解决该问题,但我很困惑为什么BeanPropertyRowMapper无法创建响应。
如何使用材料选择时间:1.3.0-alpha01,我正在寻找以下屏幕截图的时间选择器,这是我在材料io中找到的。
物料日期选择器
//Creating a MaterialDatePicker.Builder instance that gives us a single date selector.
val builder : MaterialDatePicker.Builder<*> = MaterialDatePicker.Builder.datePicker() // 1
//Building-up the MaterialDatePicker by calling a builder.build function
val picker : MaterialDatePicker<*> = builder.build() // 2
//Display the Material Date Picker.
picker.show(requireActivity().supportFragmentManager, picker.toString()) // 3
Run Code Online (Sandbox Code Playgroud)
简单的时间选择器
val cal = Calendar.getInstance()
val timeSetListener = TimePickerDialog.OnTimeSetListener { _, hour, minute ->
cal.set(Calendar.HOUR_OF_DAY, hour)
cal.set(Calendar.MINUTE, minute)
//textView.text = SimpleDateFormat("HH:mm").format(cal.time)
}
val time = TimePickerDialog(context, timeSetListener, cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), true)
time.setTitle("")
time.show()
Run Code Online (Sandbox Code Playgroud) android kotlin android-timepicker material-design material-components-android
我是 micronaut 和服务器端编程的新手。不幸的是,micronaut 文档对我来说没有多大意义,因为我没有 Java 背景。很多像“ApplicationContext”这样的术语在英语中是有意义的,但我不知道如何在实践中使用它们。
尝试从一个非常基本的应用程序开始,该应用程序根据其所处的环境打印不同的配置(“localhost”、“dev”、“prod”)。
这是我的控制器
@Controller("/")
class EnvironmentController {
// this should return "localhost", "DEV", "PROD" depending on the environment
@Get("/env")
@Produces(MediaType.TEXT_PLAIN)
fun env() = "???" // what should I put here ?
// this should return the correct mongodb connection string for the environment
@Get("/mongo")
@Produces(MediaType.TEXT_PLAIN)
fun mongo() = "???" // what should I put here ?
}
Run Code Online (Sandbox Code Playgroud)
这是application.yml. 理想情况下,每个环境都有 1 个 yml 文件
micronaut:
application:
name: myApp
server:
port: 8090
environment: localhost
mongodb: …Run Code Online (Sandbox Code Playgroud) 我有两个不可变的地图,例如:
val a = mapOf("a" to 1, "z" to 1)
val b = mapOf("b" to 1, "a" to 1, "c" to 1)
Run Code Online (Sandbox Code Playgroud)
有没有什么优雅的方法来连接这些地图并拥有一个包含所有键的地图?如果它有重复的键,我想用 B 映射中的值替换它。
结果应该类似于:
mapOf("z" to 1, "b" to 1, "a" to 1, "c" to 1)
Run Code Online (Sandbox Code Playgroud) 从 url 下载文件的最佳方法是什么?我尝试使用下载管理器。但我无法理解如何获取下载文件的 Uri。这是我的代码:
file?.let {
val uri = Uri.parse(it)
val downloadManager = getSystemService<Any>(Context.DOWNLOAD_SERVICE) as DownloadManager?
val request = DownloadManager.Request(uri)
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI or
DownloadManager.Request.NETWORK_MOBILE)
request.allowScanningByMediaScanner()
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "downloadfileName")
request.setMimeType("*/*")
downloadManager?.enqueue(request)
}
Run Code Online (Sandbox Code Playgroud)
也许今天有更好的方法来下载文件并获取 Uri。请帮我
我是 DataBinding 的新手。我想在 Fragment 中使用 ViewModel 和 DataBinding。当我在 Activity 中使用时,它可以工作,但在 Fragment 中不起作用。请帮助使用数据绑定获取编辑文本内容。先感谢您。主活动.kt
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
supportFragmentManager.beginTransaction().add(R.id.main,BlankFragment()).commit()
}
}
Run Code Online (Sandbox Code Playgroud)
活动.main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main"
tools:context=".MainActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
空白片段.kt
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import com.resocoder.databinding.databinding.FragmentBlankBinding
class BlankFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val binding: FragmentBlankBinding = DataBindingUtil.inflate(inflater,
R.layout.fragment_blank, container, …Run Code Online (Sandbox Code Playgroud) kotlin ×10
android ×6
arrow-kt ×1
data-binding ×1
fragment ×1
material-components-android ×1
micronaut ×1
monads ×1
spring-jdbc ×1
uri ×1