ฉันจะแปลง Kotlin ของฉันArray
เป็น varargs Java ได้String[]
อย่างไร
val angularRoutings =
arrayOf<String>("/language", "/home")
// this doesn't work
web.ignoring().antMatchers(angularRoutings)
ฉันจะแปลง Kotlin ของฉันArray
เป็น varargs Java ได้String[]
อย่างไร
val angularRoutings =
arrayOf<String>("/language", "/home")
// this doesn't work
web.ignoring().antMatchers(angularRoutings)
คำตอบ:
คุณควรใช้ตัวดำเนินการกระจายซึ่งมีลักษณะดังนี้: *
ตัวดำเนินการกระจายจะต้องวางไว้หน้าอาร์กิวเมนต์อาร์เรย์:
antMatchers(*angularRoutings)
สำหรับข้อมูลเพิ่มเติมโปรดดูเอกสารประกอบ :
เมื่อเราเรียกใช้ a-
vararg
function เราสามารถส่งผ่านอาร์กิวเมนต์ทีละตัวเช่นasList(1, 2, 3)
หรือถ้าเรามีอาร์เรย์อยู่แล้วและต้องการส่งผ่านเนื้อหาไปยังฟังก์ชันเราจะใช้ตัวดำเนินการกระจาย (นำหน้าอาร์เรย์ด้วย*
):
โปรดทราบว่าตัวดำเนินการกระจายถูกกำหนดไว้สำหรับอาร์เรย์เท่านั้นและไม่สามารถใช้กับรายการได้โดยตรง เมื่อจัดการกับรายการให้ใช้เช่นtoTypedArray()
เพื่อแปลงเป็นอาร์เรย์:
*list.toTypedArray()
vararg
คาดหวังองค์ประกอบแต่ละรายการและ*array
เป็นวิธีที่ Kotlin พูดว่า "ถือว่าอาร์เรย์นี้เป็นองค์ประกอบเดี่ยวสำหรับวัตถุประสงค์นั้น" ภายในvararg
ฟังก์ชันvararg
พารามิเตอร์ก็จะเป็นอาร์เรย์อยู่ดี ในการแปลงแต่ละองค์ประกอบเป็นอาร์เรย์คุณสามารถใช้ได้arrayOf(...)
แต่คุณไม่จำเป็นต้องใช้ในกรณีนี้
vararg
?