我目前正在探索Digital Mars D语言的规范,并且在理解原始字符类型的完整性方面遇到了一些麻烦." 学习探戈与D "一书对该领域语言的能力和局限性同样含糊不清.
这些类型在网站上给出:
char; // unsinged 8 bit UTF-8 wchar; // unsigned 16 bit UTF-16 dchar; // unsigned 32 bit UTF-32
由于我们知道大多数Unicode转换(UTF)格式编码表示具有可变位宽的字符,这是否意味着D中的char只能包含适合8位的值,或者它是否在机器中扩展物理内存给你双字节字符?也许还有其他一些可能性,比如在重载变量时自动转换到下一个最合适的类型?
比方说,我想在编辑器中使用UTF-8字符并输入中文.它会简单地摔倒,还是能够更正确地处理Unicode字符,就像在C#中一样?是否仍然需要提供胶水代码以允许使用Unicode支持的任何语言?
我非常感谢您提供有关这些类型如何在幕后工作的任何具体信息,以及有关处理其限制的任何一般最佳实践建议.
我已经寻找并尝试了各种解决方案,但到目前为止,它们都没有解决我的问题.我在Visual Studio 2010/.NET4中使用WPF内置的DataGrid来显示存储为XDocument的XML文档中的数据.
我的代码都运行良好,我已经验证了XDocument存在且正确.但是,DataGrid不显示任何数据.
XML看起来像这样(为简洁起见,简化):
<data>
<track>
<id>211</id>
<name>Track Name</name>
<duration>156</duration>
<artist_id>13</artist_id>
<artist_name>Artist Name</artist_name>
<album_id>29</album_id>
<album_name>Album Name</album_name>
</track>
...
</data>
Run Code Online (Sandbox Code Playgroud)
我的XAML看起来像这样:
<DataGrid x:Name="LibraryView" Grid.Row="1"
DataContext="{Binding Path=TrackList}" ItemsSource="{Binding XPath=/data/track}">
<DataGridTextColumn Header="Title" Binding="{Binding XPath=name}"/>
<DataGridTextColumn Header="Artist" Binding="{Binding XPath=artist_name}"/>
<DataGridTextColumn Header="Album" Binding="{Binding XPath=album_name}"/>
<DataGridTextColumn Header="Length" Binding="{Binding XPath=duration}"/>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
备份它的C#只是将一个新的XDocument(从Web服务下载)分配给TrackList属性(实现INotifyPropertyChanged).没有进一步处理.
我以前曾尝试使用XLinq来绑定查询结果,这也不起作用(同样的问题),所以我想我会尝试使用XPath方法来避免写一个潜在的错误Linq语句,并尝试找到问题.
我没有关于如何正确显示DataGrid的想法.我对这应该如何工作的理解显然是缺乏的,所以我非常感谢所提供的任何帮助.
编辑:值得注意的是,我对输入数据格式有一些灵活性,因为我自己下载原始XML.我会尝试一些建议,看看我能开展什么工作.
我想我错过了一些在这里应该很明显的东西,但我在这一点上画了一个空白.
我已经构建了一个非常原始的UserControl,其中只包含一个TextBox用作日志窗口的内容:
<UserControl x:Class="My.LoggerControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
x:Name="LoggerView">
<Grid x:Name="LayoutRoot">
<TextBox x:Name="LogWindow" AcceptsReturn="True"/>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
我不认为这是最好的方法,但它应该足够原型.
代码隐藏同样简单:
public partial class LoggerControl : UserControl, ILogger
{
public LoggerControl()
{
InitializeComponent();
}
private LogLevel level = LogLevel.Warning;
#region ILogger
public LogLevel Level
{
get { return level; }
set { level = value; }
}
public void OnError(string s)
{
if (level >= LogLevel.Error)
LogWindow.AppendText("ERROR:::" + s + "\n");
}
// ...
#endregion
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚的是如何将此控件添加到我的MainWindow.xaml.简化,让我说我的窗口看起来像这样:
<Window x:Class="My.MainWindow" …Run Code Online (Sandbox Code Playgroud) 我试图通过将常见的实用程序类和用户控件放入打包的库中来使我的代码更可重用.IDE正在变得困难,因为到目前为止,我发现它始终默认为Windows窗体用户控件并禁用我从"添加新项"对话框创建xaml文件等的能力.
是否可以借助IDE环境为类和控件创建库(我正在使用VS2008 Express)?
如果是这样,在处理WPF库时,我需要更改什么才能从IDE中获取首选行为?这只是选择正确的参考组合的情况,还是我需要编辑项目文件?我在这一点上有点亏.
我正在尝试学习如何使用 Bazel 设置 monorepo。我的代码在 GitHub 上。
我在 Mac OS 10.14.5 上使用bazelbuild/rules_nodejs版本 0.37 和 Bazel 0.29.1-homebrew。
我遇到的问题是,在bazelbuild/rules_nodejs中require运行规则时,库模块的 找不到生成的库。rollup_bundle
我认为我的配置中有一些错误,但通过阅读文档并不清楚。相关代码部分复制在下面,但最新版本将始终在存储库中。
/WORKSPACE
workspace(
name = "bazel_example",
managed_directories = {"@npm": ["node_modules"]},
)
# load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "build_bazel_rules_nodejs",
sha256 = "0d9660cf0894f1fe1e9840818553e0080fbce0851169812d77a70bdb9981c946",
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.37.0/rules_nodejs-0.37.0.tar.gz"],
)
load("@build_bazel_rules_nodejs//:defs.bzl", "yarn_install")
yarn_install(
name = 'npm',
package_json = '//:package.json',
yarn_lock = '//:yarn.lock',
)
load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies")
install_bazel_dependencies()
# Set up TypeScript toolchain
load("@npm_bazel_typescript//:index.bzl", "ts_setup_workspace")
ts_setup_workspace()
Run Code Online (Sandbox Code Playgroud)
在 中 …
最简单的Unix工具是,true而且false几乎没有什么程序可以分别将0和1分别返回给操作系统并退出.C中的示例可能如下所示:
// true - does nothing successfully
int main(void) {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
通过搜索,我无法找到在Haskell中实现此类功能的方法.IO monad中有什么可以做到的吗?