小编J-b*_*bob的帖子

FXML:"初始化后运行"

我有一个JavaFX应用程序,它使用FXML和用Java编写的控制器类.在Java控制器中,我需要注意不要在FXML Node元素上进行操作,直到它被初始化(否则我会得到一个NullPointerException),这在initialize方法运行之前是不可保证的.所以我发现自己做了很多这样的事情:

控制器在FXML文件中设置如下:

<Pane fx:controller="Controller" ...>
...
</Pane>
Run Code Online (Sandbox Code Playgroud)

然后这是Java文件中的控制器.

class Controller{
    @FXML
    Pane aPane;
    int globalValue;

    public void setSomething(int value){
        globalValue = value;
        if(!(aPane == null)){  //possibly null if node not initialized yet
            aPane.someMethod(globalValue)
        }
    }

    @FXML
    void initialize(){
        aPane.someMethod(globalValue) //guaranteed not null at this point
    }


}
Run Code Online (Sandbox Code Playgroud)

这有效,但它很笨重,也很重复.我必须创建globalValue属性,以防万一setSomething调用之前的方法initialize,我必须确保我的setSomething方法中的操作与中的操作相同initialize.

当然,有一种更优雅的方式来做到这一点.我知道JavaFX有一个Platform.runlater(...)方法可以保证在主应用程序线程上运行一些东西.Perhpas有类似的东西Platform.runAfterInitialize(...)等到初始化,或者如果初始化已经发生则立即运行?或者,如果有另一种方法,我愿意接受建议.

java javafx

3
推荐指数
1
解决办法
8410
查看次数

与shared_ptr相比,unique_ptr有什么优势?

我目前正在学习C ++中的unique_ptrshared_ptr类型。智能指针比原始指针的优势显而易见,并且有很多解释说明为什么您应该首选原始指针而不是原始指针。我正在努力理解的是,为什么您会特别选择使用unique_ptrovershared_ptr

据我所知,从程序员的角度(忽略实现)来看unique_ptrjust似乎是a的特殊情况版本,shared_ptr其中引用计数限制为一个。因此,如果我创建了一个shared_ptr并且仅创建了一个引用,那么我基本上具有a的效用unique_ptrshared将来可以使用该零件)。

那么,unique_ptr给您带来什么好处呢?我应该承认,我是作为Java程序员来处理这个问题的,并且与shared_ptrJava的工作方式差不多。

c++ smart-pointers shared-ptr unique-ptr

3
推荐指数
1
解决办法
92
查看次数

如何使用谓词列表过滤集合

我有一个元素列表,例如:

val myList = listOf(1,2,3,4,5,6,7)
Run Code Online (Sandbox Code Playgroud)

该列表可以是任何类型,这只是一个示例。现在我有一个任意长度的谓词列表:

val myPredicates = listOf({myInt: Int -> myInt > 1}, {myInt: Int -> myInt%2 == 0})
Run Code Online (Sandbox Code Playgroud)

如何通过按列表顺序应用所有谓词来过滤列表myList并在新列表中获取结果?我觉得答案就在于使用reduceorfold运算符,但答案却让我困惑。

collections filtering kotlin

3
推荐指数
1
解决办法
893
查看次数

如何匹配长度为4或6但不是5的字符串?

在javascript正则表达式中: /^[0-9]{4}$/将匹配长度为4的数字字符串. /^[0-9]{4,6}$/将匹配长度为4,5或6的数字字符串.如何匹配长度为4或6但不是5的字符串?这只是一个例子,两个长度可以是任何东西.如果我想匹配超过两个长度怎么办?

javascript regex

2
推荐指数
1
解决办法
76
查看次数

在 sqlalchemy 中提交之前运行清理/验证代码

我对 PostGreSQL 和 SQLAlchemy 完全陌生,我试图弄清楚如何在 SQLAlchemy 模型提交到数据库之前在它上运行验证/清理代码。这个想法是为了确保超出 SQL 数据库内置的标准类型强制执行的数据一致性。例如,如果我有一个User建立在 SQLAlchemy 模型上的模型,

class User(db.Model):
   ...
   email = db.Column(db.String())
   zipCode = db.Column(db.String())
   lat = db.Column(db.Float())
   lng = db.Column(db.Float())
   ...
Run Code Online (Sandbox Code Playgroud)

在提交这份文件之前,我想:

  • 修剪电子邮件字段的任何前导和尾随空格
  • 确保邮政编码是一个 5 位数字字符串(我将为此定义一个正则表达式)
  • 自动查找邮政编码的相应纬度/经度并将其保存在lat&lng字段中。
  • 数据库架构不能强制执行的其他事情

SQLAlchemy 是否提供了一种简单的方法来提供保证在提交执行这样的任意任务之前运行的 Python 代码?

postgresql sqlalchemy

2
推荐指数
1
解决办法
2191
查看次数

FXML:将子宽度/高度绑定到父级宽度/高度的优雅方式

我正在使用FXML和JavaFX来开发图形界面.我发现这种方法可以将子节点的宽度/高度绑定到它父节点的宽度/高度:

<Node fx:id="parent">
    <children>
        <Node prefWidth=${parent.width}></Node>
    <children>
</Node>
Run Code Online (Sandbox Code Playgroud)

但这感觉不够优雅.我宁愿不必给节点一个id,因为它的孩子可以引用它的维度.是否有一些参考parent节点的方法?也许是这样的prefWidth=${parent.width}

注意:我知道这可以通过Java以编程方式完成,但这不是我想要的.我正在寻找一种在FXML中实现这一目标的方法.

javafx fxml

2
推荐指数
1
解决办法
6179
查看次数

扁平化 Javascript 字典,保留嵌套键

我有一些方法可以展平数组 javascript,即转换[1,[2,3]][1,2,3]. 但我正在寻找一种简洁的方法来展平字典,同时保留键。具体来说,我想要一本如下所示的字典:

{'key1':1,'key2':{'key3':2,'key4':3,'key5':{'key6':4}}}
Run Code Online (Sandbox Code Playgroud)

需转换为:

{'key1':1, 'key2.key3':2,'key2.key4':3,'key2.key5.key6':4}
Run Code Online (Sandbox Code Playgroud)

确切的输出格式(字典、对列表等)并不重要,只要它清楚地将嵌套键的字符串与值相关联即可。出于我的目的,假设没有一个键包含.字符也是可以的,这样它就可以用来表示下一个键。

javascript dictionary

1
推荐指数
1
解决办法
7692
查看次数