Инициализировать массив с универсальным типом в kotlin

Это сработало для меня:

  replace_na_with_last<-function(x,a=!is.na(x)){
     x[which(a)[c(1,1:sum(a))][cumsum(a)+1]]
  }


> replace_na_with_last(c(1,NA,NA,NA,3,4,5,NA,5,5,5,NA,NA,NA))

[1] 1 1 1 1 3 4 5 5 5 5 5 5 5 5

> replace_na_with_last(c(NA,"aa",NA,"ccc",NA))

[1] "aa"  "aa"  "aa"  "ccc" "ccc"

скорость тоже разумная:

> system.time(replace_na_with_last(sample(c(1,2,3,NA),1e6,replace=TRUE)))


 user  system elapsed 

 0.072   0.000   0.071 
0
задан user196877 31 March 2019 в 04:15
поделиться

1 ответ

class StackADT<T>(var capacity: Int) {

    private var top = -1
    private val stack: ArrayList<T> = ArrayList(capacity)

    fun push(element: T) {
        if (top == capacity)
            throw Exception("Overflow occurred in stack!!")
        top++
        stack.add(element)
    }
    ...

Вы можете проверить здесь: Kotlin Playground

Другой способ:

var stack = arrayOfNulls<Any?>(capacity) as Array<T>
0
ответ дан JavierSegoviaCordoba 31 March 2019 в 04:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: