的各种is...(例如功能isalpha,isdigit)在ctype.h不完全可预测的.它们接受int参数但期望字符值在该unsigned char范围内,因此在char签名的平台上,char直接传递值可能导致不合需要的符号扩展.我认为处理这个问题的典型方法是明确地转换为unsigned char第一个.
好的,但是处理各种isw...功能的正确,便携方式是wctype.h什么? wchar_t,例如char,也可能是签名或未签名,但因为wchar_t它本身是typedef一个,类型名称unsigned wchar_t是非法的.
我想检查一个字符串是否只包含:
在 Flutter 中,我尝试了以下方法来仅获取字母,但即使存在其他字符,如果它包含字母,它也会返回 true:
String mainString = "abc123";
print(mainString.contains(new RegExp(r'[a-z]')));
Run Code Online (Sandbox Code Playgroud)
正如我所说,它会返回,true因为它包含字母,但我想知道它是否只包含字母。
有没有办法做到这一点?
目标平台: Android 目标操作系统版本/浏览器: minSdkVersion 21 (android 5.0),targetSdkVersion 28 (android 9) 设备: galaxy_nexus_api_23:5554 => 模拟器My Develpment 机器。:
OS Name: Microsoft Windows 10 Enterprise
OS Version: 10.0.17763 N/A Build 17763
OS Manufacturer: Microsoft Corporation
OS Configuration: Standalone Workstation
OS Build Type: Multiprocessor Free
Registered Owner: N/A
Registered Organization: N/A
System Type: x64-based PC
Processor(s): 1 Processor(s) Installed.
[01]: …Run Code Online (Sandbox Code Playgroud) 我有一些这样的代码:
File("foo.txt").readAsString().catchError((e)=>print(e));
编译器正在抱怨
info: The return type 'void' isn't assignable to 'FutureOr<T>', as required by 'Future.catchError'.
我似乎无法给它想要的东西,也无法在任何文档中找到一个清晰的使用示例(只是 git 中的一个很长的问题,关于有多少种错误使用它的方法)。如果我从表面上看文档,我应该能够返回一个 bool 或一个 future,两者都不会让分析器满意。
我如何提供这个 FutureOr?
我有一个代码(最初不是我编写的),在尝试更新它时,我收到此错误:
ui.encodePng(temp) "The argument type 'List<int>' can't be assigned to the parameter type 'Uint8List'"
Run Code Online (Sandbox Code Playgroud)
这是基本代码:
// create crop image for each block
ui.Image temp = ui.copyCrop(
fullImage,
xAxis.round(),
yAxis.round(),
widthPerBlockTemp.round(),
heightPerBlockTemp.round(),
);
// get offset for each block show on center base later
Offset offset = Offset(size.width / 2 - widthPerBlockTemp / 2,
size.height / 2 - heightPerBlockTemp / 2);
ImageBox imageBox = new ImageBox(
image: Image.memory(
ui.encodePng(temp),
fit: BoxFit.contain,
),
isDone: false,
offsetCenter: offsetCenter,
posSide: jigsawPosSide,
radiusPoint: minSize,
size: …Run Code Online (Sandbox Code Playgroud) 我在 Mac 上,我通过运行从 Dart 2.7.1 升级到 Dart 2.8
brew upgrade dart
Run Code Online (Sandbox Code Playgroud)
正如它在文档中所描述的那样。
但是,2.8 版包含了 Aqueduct 框架的一些重大更改,因此我想降级到 Dart 2.7.2。
我试过
brew install dart@2.7.2
Run Code Online (Sandbox Code Playgroud)
但得到
错误:没有名称为“dart@2.7.2”的可用公式
我也试过
brew search dart
Run Code Online (Sandbox Code Playgroud)
但只得到
dart-lang/dart/dart ?
dart-lang/dart/dart-beta
dart-lang/dart/dart@1
dart-lang/dart/dart@2
dartsim
没有选择较低 2.x 版本的选项。
如何降级?
我已经使用 dart 一段时间了,只是想知道不选择类型注释的偏好,我个人发现,如果我可以看到类型注释而不想知道某些变量是什么类型,那么我个人会更容易理解并返回我的代码。是否有理由更喜欢 var 而不是直接类型注释?
为什么是这样:
var match = regexp.firstMatch('Regex Match');
Run Code Online (Sandbox Code Playgroud)
比这个更好:
RegExpMatch match = regexp.firstMatch('Regex Match');
Run Code Online (Sandbox Code Playgroud) 在 Dart 中,立即赋值与在 Java 中的构造函数中是否有区别?
class Example {
int x = 3;
}
Run Code Online (Sandbox Code Playgroud)
对比
class Example {
int x;
Example() {
x = 3;
}
}
Run Code Online (Sandbox Code Playgroud)
我问是因为当我使用 Flutter 并尝试将一个使用 setState 的函数分配给一个变量时,前一种方法是不可能的,但后一种方法是可能的。
我是飞镖新手。我不知道我犯了什么样的错误,但是这段代码不起作用。是一个简单的代码,只需在终端中读取年龄并说它是未成年人或超过 18 岁。
import 'dart:io';
main(){
print("Entre com a sua idade: ");
var input = stdin.readLineSync();
var idade = int.parse(input);
if(idade >= 18){
print("É maior de idade");
}else{
print("É menor de idade");
}
}
Run Code Online (Sandbox Code Playgroud)
我得到这个错误:
algoritmo01.dart:15:25: 错误:参数类型“字符串?” 不能分配给参数类型 'String',因为 'String?' 可以为空,而 'String' 不是。var idade = int.parse(input);
我来自 Javascript 的“let”,我对 var 和其他类型之间的巨大差异感到有点困惑。我知道在某些情况下我们需要使用 var(匿名数据类型),而在某些情况下我们需要使用显式类型。我也理解var不太简洁,类型较多,但是在Flutter开发中使用类型代替var是否有更深入或者更实际的应用呢?