Size: a a a

Kotlin Community

2020 February 17

VP

Vladimir Petrakovich in Kotlin Community
λoλdog
ты выдумываешь проблемы там, где их нет
Ну ок 🤷‍♂️
источник

AM

Andrew Mikhaylov in Kotlin Community
Vladimir Petrakovich
Мало нам старта рантайма ради одного скрипта, надо ещё десятки мегабайт распаковать, да
Речь про установщик же, why not
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Я ведь могу написать kts файл[ы] и использовать с консоли как "башовую" прогу?
Можно, есть main.kts для этого.
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
ЕМНИП, только с помощью kscript
не, уже можно
источник

VP

Vladimir Petrakovich in Kotlin Community
Andrew Mikhaylov
Речь про установщик же, why not
Потому что установщики обычно не такие жирные?
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Мне надо написать простой установщик, но баш для меня и моей команды жуть не понятная. Я вот думал на котлине это написать. С другой стороны придется таки доставлять jmv и kotlin на машину для этого, чего не очень хочется.

Был бы котлин2баш %)
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
О, а котлин же можно в native скомпилить? Оно будет запускаться без всего на линуксе?
будет, но нюансы есть, особенно с рефлексией
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
Да, но там нет пока нормальной апишки для работы с файлами, всё на POSIX-овых сишных функциях.
он про Graal Substrate по-моему была
источник

λ

λoλdog in Kotlin Community
нет, он как раз не уточнял ничего
источник

AN

Alexander Nozik in Kotlin Community
В общем, есть kotlin-native, а есть GraalVM совсем два разных инструмента
источник

LS

Lev Shagalov in Kotlin Community
Так, тогда вот такой вопрос: Я хочу на колине написать скрипт-установщик с менюшками. Если этот установщик надо будет компилить - ну наверно не очень принципиально.

Очень хочется на машине ничего дополнительно не ставить в систему (но копировать в папочку рядом со скриптом - норм). Собственно через этот установщик я хотел ставить все остальное.

Размер не особо важен.
источник

AN

Alexander Nozik in Kotlin Community
источник

AN

Alexander Nozik in Kotlin Community
Но тут нужен kotlinc
источник

LS

Lev Shagalov in Kotlin Community
Забавно, а я это умудрился мимо глаз пропустить.

А можно kotlinc и яву "положить" рядом?
источник

AN

Alexander Nozik in Kotlin Community
Если в системе нет жавы/котлина, то надо тащить JVM с собой вместе с компилятором
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Забавно, а я это умудрился мимо глаз пропустить.

А можно kotlinc и яву "положить" рядом?
разумеется, смотри выше
источник

AN

Alexander Nozik in Kotlin Community
Но если тащить все с собой, лучше взять embedded компилятор и просто сделать приложуху, а потом жмакнуть ее jlink-ом
источник

LS

Lev Shagalov in Kotlin Community
Alexander Nozik
разумеется, смотри выше
Это куда смотреть? Вроде не писали про это? Я имею ввиду чтобы просто рядом в папки положить и потом запустив услоный "./start.sh" - запустить все это добро.
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Это куда смотреть? Вроде не писали про это? Я имею ввиду чтобы просто рядом в папки положить и потом запустив услоный "./start.sh" - запустить все это добро.
Ну так надо просто к kotlinc путь указать
источник

AR

Abai Rakhym in Kotlin Community
import kotlin.math.roundToInt
import java.io.File
const val  TAVERN_NAME = "Taernyl's Folly"
fun main(args: Array<String>, ) {
   var signatureDrink = "Buttered Ale"
   val gold:Int = "5.91".toIntOrNull() ?: 0
   println(patronList[0])
   if (patronList.contains("Eli")){
       println("the tavern master says: Eli s in the back playing cards.")
   } else{
       println("the tavern master says: eli isnt here")
   }
   if (patronList.containsAll(listOf("sophie" , "mordoc"))){
       println("The tavern master says: Yea, they re seated by the stew kettle")
   } else {
       println("The tavern master says: Nay they departed hours ago ")
   }

   (0..9).foreach {
       val first = patronList.shuffled().first()
       val last = lastName.shuffled().first()
       val name = "$first $last"
       println(name)
   }
   println(patronList)
   patronList.remove("Eli")
   patronList.add("Alex")
   patronList.add(0 , "Alex")
   patronList[0] = "Alexis"
   println(patronList)

}
//   signatureDrink = null
//var beverage = readLine()
//if (beverage != null){
//   beverage = beverage.capitalize()
//} else {
// println("I can t do that without crashing - beverage was naul !")
//  }
//beverage = null
//  val beverageServed: String = beverage ?: "Buttered Ale"
// println(beverageServed)
   // placeOrder("shandy,Dragons Breath, 5.91")
// placeOrder("elixir,Shirley's Temple,4.12 ") не надо вообще
private fun toDragonSpeak(phrase: String) =
   phrase.replace(Regex("[aeiou]==[AEIOU]")) {
       when (it.value) {
           "a" -> "4"
           "e" -> "3"
           "i" -> "1"
           "o" -> "0"
           "u" -> "|_|"
           "A" -> "4"
           "E" -> "3"
           "I" -> "1"
           "O" -> "0"
           "U" -> "-_-"
           else -> it.value

       }
   }

private fun placeOrder((patronName: String, menuData: String) {
   val indexOfApostrophe = TAVERN_NAME.indexOf('\'')
   val tavernMaster = TAVERN_NAME.substring(0 until indexOfApostrophe)
   println("$patronName speaks with $tavernMaster about their order.")

   //  val data = menuData.split(',')
   //  val type = data [0]

   //   val name = data[1]
   //  val price = data[2]
   val (type, name, price) = menuData.split(",")
   val message = "Madri buys a $name ($type) for $price"
   println(message)

 //  performPunchanse(price.toDouble(),)
   // val phrase = "Ah , delicious $name!"
   // println("Madrigal exclaims: ${toDragonSpeak(phrase)}")
   val phrase = if (name == "Dragon's Breath") {
       "$patronName exclaims: ${toDragonSpeak("Ah, delicious $name!")}"
   } else {
       "$patronName says: Thanks for the $name."   }
   println(phrase)

 //  var playerGold = 10
//   var playerSillver = 10
 val patronList = mutableListOf("Eli", "Mordoc","Sophie")
   val lastName = listOf("Ironfoot" , "Frensworth" , "Baggins")
   val uniquePatrons = mutableSetOf<String>()
   val menuList = File("data/tavern-menu-items.txt")
       .readText()
       .split("\n")

}
fun performPunchanse(price: Double, ){
   displayBalance()
   var playerSilver = 10
   var playerGold = 10
   val totalPurse = playerGold + (playerSilver / 100.0)
   println("Total purse: $totalPurse")
   println("Purchasing item for $price")

   val remainingBalance = totalPurse - price
   println("Remaining balance: ${"%.2f".format(remainingBalance)}")

   val remainingGold = remainingBalance.toInt()
   val remainingSilver = (remainingBalance % 1 * 100).roundToInt()
   playerGold = remainingGold
   playerSilver = remainingSilver
   displayBalance()
}

private fun displayBalance(){
   println("Player's purse balance: Gold: $playerGold , Silver: $playerSilver")
}
источник