这是我的代码:
@Composablefun ChatList() {
ConstraintLayout {
val (list, send) = createRefs()
val viewModel = viewModel<MainViewModel>()
val chatList by viewModel.messages.observeAsState(viewModel.messageList)
var message by rememberSaveable { mutableStateOf("") }
val state = rememberLazyListState()
LazyColumn(state = state, modifier = Modifier.constrainAs(list) {
top.linkTo(parent.top)
bottom.linkTo(send.top)
height = Dimension.fillToConstraints
}) {
items(chatList) { item ->
when (item.isMe) {
true -> ChatLayoutMe(item.message)
false -> ChatLayout(item.message)
}
}
}
SendMessage(message = message, modifier = Modifier.constrainAs(send) {
bottom.linkTo(parent.bottom)
}) {
message = it
}
}}
@Composablefun SendMessage(message: String, modifier: Modifier, onMessageChange: (String) -> Unit) {
......
Column(
modifier = Modifier
.clickable { viewModel.addMessage(message) }
......
}
class MainViewModel : ViewModel() {
val messages = MutableLiveData<List<ChatItem>>()
val messageList = mutableListOf<ChatItem>().apply {
............
}
fun addMessage(message: String) {
messageList.add(ChatItem(message, true))
messages.value = messageList
}
}
输出如下:
v = [1, 2, 3, 4, 5, 7]
def con(v, i):
if i == len(v) : return print("ok")
con(v, i + 1)
print(con(v, 1))
有人知道我怎么解决吗?
答案 0 :(得分:2)
print
返回 None
而您正在返回 print
的结果return con(v, i + 1)
否则函数将返回 None
答案 1 :(得分:1)
您的代码会打印它,因为此代码的结果是 (?![·\u0907\u0909])[Ά-ώ]
,而调用 print 会返回 print(print("ok"))
。您需要返回除 None
以外的其他内容。
答案 2 :(得分:0)
只需调用 con(v,1)
。
无需使用 print(con(v,1))
答案 3 :(得分:0)
我理解你的问题,你想递归地获取向量的长度/转到向量的末尾。您需要将最内层递归循环的结果返回到最外层。因此,您需要返回内部结果:
v = [1, 2, 3, 4, 5, 7]
def con(v, i):
if i == len(v):
print("ok")
return i
return(con(v, i + 1))
print("Length of vector is: ",con(v, 1))
这会给:
ok
Length of vector is: 6