我有一个Cmd Msg需要按顺序运行的列表.我目前正在使用,Cmd.batch list但似乎所有这些都在同时运行,以至于稍后运行的命令不知道先前命令应该引入的模型的任何更改.
我正在调查Task.andThen但不太确定这是否是正确的方向或如何制造Cmd Msg出一个Task.我是在正确的轨道上还是有更好的方法来做到这一点,也许仍然有用Cmd.batch?
我现在有两个函数receive : String -> Model -> Cmd Msg和processMsg : String -> Model -> Cmd Msg:
receive : String -> Model -> Cmd Msg
receive msg model =
msg |> String.split "&"
|> List.map String.trim
|> List.sort
|> List.map (processMsg model)
|> Cmd.batch
processMsg : String -> Model -> Cmd Msg
... (uses Cmd.Extra.message for Msg -> Cmd Msg)
Run Code Online (Sandbox Code Playgroud)
编辑 …
我有一个应用程序,我希望 QTabBar 位于与 QTabWidget 区域不同的 VBoxLayout 中。使用下面的代码可以正常工作,但我遇到了样式问题。在我将 QTabBar 与 QTabWidget 分开之前,我没有任何问题,但现在我不知道如何按照我想要的方式设置它的样式。
#!/usr/bin/env python2
from PyQt4 import QtGui, QtCore
from peaks import *
class mainWindow(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setWindowFlags(QtCore.Qt.Dialog)
self.tabWidget = QtGui.QTabWidget()
self.tabBar = QtGui.QTabBar()
self.tabBar.setContentsMargins(0,0,0,0)
self.tabWidget.setTabBar(self.tabBar)
self.tabWidget.setTabPosition(QtGui.QTabWidget.West)
self.tabWidget.setIconSize(QtCore.QSize(35, 35))
self.tab1 = QtGui.QWidget()
self.tab2 = QtGui.QWidget()
tabLayoutBox = QtGui.QVBoxLayout()
tabLayoutBox.setContentsMargins(0,0,0,0)
tabLayoutBox.addWidget(self.tabBar)
mainHBox = QtGui.QHBoxLayout()
mainHBox.setContentsMargins(0,0,0,0)
mainHBox.setSpacing(0)
mainHBox.setMargin(0)
mainHBox.addLayout(tabLayoutBox)
mainHBox.addWidget(self.tabWidget)
mainVBox = QtGui.QVBoxLayout()
mainVBox.addWidget(QtGui.QWidget())
mainVBox.addLayout(mainHBox)
self.setLayout(mainVBox)
self.tabWidget.addTab(self.tab1, 'tab1')
self.tabWidget.addTab(self.tab2, 'tab2')
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
app.setStyleSheet(
"QTabBar { alignment: right; …Run Code Online (Sandbox Code Playgroud) 我想只用分隔符将字符串拆分一次并将其放入元组中.我试过了
fn splitOnce(in_string: &str) -> (&str, &str) {
let mut splitter = in_string.split(':');
let first = splitter.next().unwrap();
let second = splitter.fold("".to_string(), |a, b| a + b);
(first, &second)
}
Run Code Online (Sandbox Code Playgroud)
但我一直被告知,second活得不够久.我想这是因为splitter它只存在于功能块内部,但我不确定如何解决这个问题.如何强制second进入功能块之外的现有?或者是否有更好的方法只分裂一次字符串?