我在SO上看过其他一些类似的问题,但是它们似乎并未专门解决以下问题。
我要实现的是拥有无法更改的编译时常量。
我有一个程序,为了使代码整洁,我对其进行了一些重组。该程序在“ main()”之前有一些const声明。我将它们移到了一个类上,但是要求将它们声明为“ static const”。然后我想,好吧,在“ main()”之前的其他“ const”声明也应该是“ static const”。但是,当我尝试这样做时,编辑器建议“不能将顶级声明声明为'static'”。例如。
static const int I_CORRECT_YN = 12; // prompt nr.
Run Code Online (Sandbox Code Playgroud)
所以,我有点困惑。我认为“常量”是静态的。为什么我必须在该类中声明“静态”?为什么不能将“顶级” const声明为“静态”?另外,两者之间有什么区别?
static const int I_CORRECT_YN = 12;
const int I_CORRECT_YN = 12;
static final int I_CORRECT_YN = 12;
final int I_CORRECT_YN = 12; ?
Run Code Online (Sandbox Code Playgroud)
声明不能更改的编译时值的最佳或唯一方法是什么?
我想我在看字面意思,但我认为还有一个更复杂的意思。
我在Win8-64上使用0.8学习Rust.我有一个测试程序,我正在处理一个处理参数输入的函数返回一个包含这些参数的结构.这很好用.然后我改变了程序以将&struct传递给函数,现在我得到一个编译器错误,我试图分配给一个不可变字段.
我应该如何传递对结构的指针/引用以防止此错误?
导致错误的代码(我尝试了一些变化):
let mut ocParams : cParams = cParams::new(); //!!!!!! This is the struct passed
fInputParams(&ocParams); // !!!!!!! this is passing the struct
if !ocParams.tContinue {
return;
}
.......
struct cParams {
iInsertMax : i64,
iUpdateMax : i64,
iDeleteMax : i64,
iInstanceMax : i64,
tFirstInstance : bool,
tCreateTables : bool,
tContinue : bool
}
impl cParams {
fn new() -> cParams {
cParams {iInsertMax : -1, iUpdateMax : -1, iDeleteMax : -1, iInstanceMax : -1,
tFirstInstance : false, tCreateTables …Run Code Online (Sandbox Code Playgroud) 请问以下新语法是什么?:
Map mAcctData = JSON.parse(sResponse); // sResponse is Json String
Run Code Online (Sandbox Code Playgroud) 最终用户(开发或生产)是否可以推荐一个最好使用"database/sql"包的Sql驱动程序包.我对Postgres,ODBC,MySql(以及可能的其他东西,但对于高容量 - 即不是Sqlite)感兴趣,最好可以在Windows和/或Linux(最好是两者)上使用.为了让我感兴趣,它可能需要最近更新/维护,并且必须与最新的Go版本一起使用.效率(吞吐量)显然很重要.欢迎任何相关评论.
我一直在写一个测试程序来帮助学习Go.在这样做时,我遇到了一些我认为编译器应该检测到错误的实例.我遇到了另一种类似的情况,所以我想我应该问为什么这种情况不会被视为错误.
示例情况:
if oError = rwfile.WriteLines(asParams, sParamsFilename); oError != nil {
fmt.Printf("Error on write to file Params. Error = %s\n", oError)
} else {
println("Params file write OK")
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,无论是否声明变量"oError",编译器都不会指示错误.如果在未声明变量时(如预期的那样)该行包含以下内容,它也可以工作:
if oError := rwfile.WriteLines(asParams, sParamsFilename); oError != nil {
Run Code Online (Sandbox Code Playgroud)
如果我声明变量"oError",则":="不起作用(如预期的那样).
"rwfile"是我编写的包,有问题的函数如下所示:
func WriteLines(asBuff []string, sFilename string) error { // write text file
Run Code Online (Sandbox Code Playgroud)
如果我通过写入文件创建错误,并使用"="而不声明变量"oError",则程序正常工作并检测非零"oError"变量.
那么,当oError未被声明为变量时,为什么在上面使用"="时不被视为错误?
Go版本是go1.1.2 Windows/386.
我有三个 showDialog 的例子。我认为 _showAlert1 是正确的,但它使用 2 个函数来实现它。_showAlert2 也可以工作,但是我认为它不正确,因为我相信 showDialog 是异步的,并且我认为该函数依赖于对话框在足够的时间内显示。_showAlert3 不起作用,因为对话框停留在屏幕上并且不清除。
如果 _showAlert2 尽管有效,但由于上述原因而不正确,有人可以告诉我应该如何构造它,以便可以在一个函数中完成此操作。
例子:
void _showAlert0(BuildContext context, String text, int seconds) async {
return await showDialog(
barrierDismissible: false,
context: context,
builder: (context) => AlertDialog(
title: Text("Error"),
content: Text(text),
));
}
void _showAlert1(BuildContext context, String text, int seconds) async {
_showAlert0(context, text, seconds);
await Future.delayed(Duration(seconds: seconds));
Navigator.of(context).pop(true);
}
void _showAlert2(BuildContext context, String text, int seconds) async {
showDialog(
barrierDismissible: false,
context: context,
builder: (context) => AlertDialog(
title: Text("Error"),
content: Text(text), …Run Code Online (Sandbox Code Playgroud) 我花了几个小时试图让 AppBar 显示具有特定高度的标题。从我在 SO 等上阅读的内容来看,它可以完成,但是我无法实现,并且我花了很多时间尝试。我需要使“标题:”和“动作:”的高度大约为 70 左右。
从我执行的各种测试中可以确定,当 AppBar 的大小超过特定大小时,任何超出的大小都会自动转到“底部:”,在我的应用程序的情况下是 TabBar。
我在另一个没有“底部:”也没有 TabBar 的测试中测试了该 AppBar 的 PreferredSize,程序中分配给 AppBar 的空间足以显示大标题,但只有部分标题具有大字体显示。在这种情况下,分配给 AppBar 的剩余空间只是空白,并显示在标题显示下方。
在我编写的另一个程序中,我将 AppBar 高度设置为 35,并且没有问题。因此,似乎将 AppBar 高度设置为较低的值适用于标题,但将其设置为较大的值则无效。
我很感激这个问题的解决方案,因为这个需求是我的程序不可或缺的一部分,我花了很多时间试图解决这个问题。
Rust显然是一种新语言(0.8).它看起来很有趣,我开始关注它.我提到了一些软件float被改为f64,所以我想找到数据类型的位置,包括float定义的.我找不到任何非常具体的东西.我找到了:
有三个浮点类型:
float,f32,和f64.浮点数写入0.0,1e6或2.1e-4.与整数一样,浮点文字也被推断为正确的类型.后缀f,f32和f64.
我猜" 浮动 "或" f "是16位.
在更广泛的说明(我不是计算机科学家),是不是真的值得所有这些小的数据类型,如瞎搞int,int32,int64,f,f32,f64(仅举几例).我可以理解一些语言,例如.字节类型,因为字符串是一个相当复杂的类型.对于数字类型,我认为它只会产生不必要的复杂性.为什么不有i64和f64,并呼吁他们诠释和漂浮(或i64和f64,以应付未来的变化,或者有浮动和INT默认这些).
也许有一些低级程序需要较小的值,但为什么不保留那些需要它们的程序使用并将它们排除在核心之外呢?我发现从例如转换是不必要的苦差事.int对i64等,它有什么真正实现?或者,将它们保留在"核心"中,但默认为64位类型.64位类型显然是必要的,而其余只是特定情况(IMO)所必需的.
前几天(下面)我遇到了以下代码,并想知道它是否在Dart中实现了任何重要意义,而不是类实例化无法更改.我确实阅读了一些关于Java的SO帖子,但是它们似乎没有结论,并不一定适用于Dart.我不会那样编码(最后),但也许我应该.在这个例子中使用"final"有什么重大意义吗?它实现了什么?
import 'dart:math';
final _random = new Random();
Run Code Online (Sandbox Code Playgroud) 在学习 Flutter 的过程中,我编写了一个 CRUD 程序来显示项目列表。我想在屏幕底部显示列表中的项目数,但我一直无法实现。目前显示的代码包含(最后)一个BottomNavigationBar 和一个BottomNavigationBarItem,我试图在其中显示列表中的项目数,即:
title: Text("Items = $this.itemCount")), // title: Text("")),
Run Code Online (Sandbox Code Playgroud)
但是它只显示“...”的项目数。我会很感激有人向我展示如何实现我的要求。
class NotesList extends StatefulWidget {
@override
NotesListPageState createState() => NotesListPageState();
}
class NotesListPageState extends State<NotesList> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Notes List'),
centerTitle: true,
),
body: new Container(
padding: new EdgeInsets.all(16.0),
child: new FutureBuilder<List<Map>>(
future: fetchDataFromDb(),
builder: (context, snapshot) {
if (snapshot == null) {
return Container(
alignment: AlignmentDirectional.center,
child: CircularProgressIndicator(),
);
} else if (snapshot.hasData) { …Run Code Online (Sandbox Code Playgroud) 我喜欢 Dart 的众多优点之一是它简洁。
\n\n例如,如下所示的单行函数:
\n\n // example 1\nString toStr() => (_iValue/_iScale).toStringAsFixed(_iDecimals);\nRun Code Online (Sandbox Code Playgroud)\n\n然而,这似乎回避了一个问题:是否存在与不返回值的单行函数等效的函数。例如。
\n\n// example 2\nvoid deductDbl(double dValue) {\n _iValue -= (dValue * _iScale).toInt();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n虽然这可以在一行上用 \xe2\x80\x9c{ 和 }\xe2\x80\x9d 来表达,但这可能会让人皱眉。类似的类比可能是一行 \xe2\x80\x9cif 语句\xe2\x80\x9d,其中不需要括号。我认为大多数人将其格式化为两行,因为它更好地说明了逻辑。然而,它仍然比使用 \xe2\x80\x9c{}\xe2\x80\x9d 更简洁,尽管如果愿意的话仍然可以选择使用 \xe2\x80\x9c{}\xe2\x80\x9d 。
\n\n作为示例 2 的替代方案,我注意到以下内容似乎有效,但可能由于某种原因而令人不悦:
\n\n // example 3\ndeductDbl(double dValue) => _iValue -= (dValue * _iScale).toInt();\nRun Code Online (Sandbox Code Playgroud)\n\n是否可以使用 \xe2\x80\x9cExample 3\xe2\x80\x9d,或者对于不返回的单行函数,是否有另一个等效于 \xe2\x80\x9c=>\xe2\x80\x9d一个值?
\n我正在学习 React.js。我的 React.js 应用程序和节点服务器使用:
Server: MongoDb, Mongoose, Express, Cors, Axios.
React.js app: BrowserRouter, Switch, Route, Link.
Run Code Online (Sandbox Code Playgroud)
当我的 React.js 应用程序启动时,我想在发出任何数据库请求之前测试节点服务器是否正在运行。
我怎样才能最好地做到这一点?(以某种方式使用 ping 吗?)