在我的应用程序中,我需要每个日期的对象地图。由于打字稿既有 aMap又有 aDate对象,我希望这很简单。
let map: Map<Date, MyObject> = new Map<Date, MyObject>();
Run Code Online (Sandbox Code Playgroud)
并用于set添加新的键和值对。但后来我意识到我不能get使用日期的值,除非我使用完全相同的实例Date。
我用它编写了一个单元测试:
it('Should not be a problem', () => {
let d1: Date = new Date(2019, 11, 25); // Christmas day
let d2: Date = new Date(2019, 11, 25); // Same Christmas day?
let m: Map<Date, string> = new Map<Date, string>();
m.set(d1, "X");
expect(m.get(d1)).toBe("X"); // <- This is OK.
expect(m.get(d2)).toBe("X"); // <- This test fails.
});
Run Code Online (Sandbox Code Playgroud)
为什么除非使用完全相同的实例,否则我无法从地图中获取值?
我正在开发一个访问相机的应用程序。该项目是用 C++ 编写的,我使用 CMake 来打包它。
要在 Mac 中部署项目,我使用以下命令,然后在 Xcode 中打开项目:
cmake -G Xcode ../src
Run Code Online (Sandbox Code Playgroud)
它工作得很好,直到上次更新,当它开始抱怨:
[access] This app has crashed because it attempted to access
privacy-sensitive data without a usage description. The app's
Info.plist must contain an NSCameraUsageDescription key with
a string value explaining to the user how the app uses this data.
Program ended with exit code: 9
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个新的 Info.plist 文件,其中包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
<key>CFBundleIconFile</key>
<string></string>
<key>NSCameraUsageDescription</key>
<string>This app requires to access …Run Code Online (Sandbox Code Playgroud) 我想将接口用作参数化接口的简称,以避免使用通用语法污染所有代码。例如:
EggChicken egg = chicken.lay(); // Can't make it compile.
Run Code Online (Sandbox Code Playgroud)
代替:
Egg<AnimalChicken> egg = chicken.lay(); // Compiles happily.
Run Code Online (Sandbox Code Playgroud)
假设我想使用参数化类(https://en.wikipedia.org/wiki/Modes_of_reproduction)对动物繁殖模式进行建模。我有以下界面:
public interface Animal<T> {
T lay();
}
interface Viviparous<T extends Viviparous> extends Animal<T> {
}
interface Egg<T extends Oviparous> {
T hatch();
}
interface Oviparous<T extends Oviparous> extends Animal<Egg<T>> {
}
Run Code Online (Sandbox Code Playgroud)
这个想法是,胎生动物躺在同一动物的新实例,而卵生动物打好的鸡蛋孵化同一动物的新实例。
现在,我想定义更精确的接口来描述狗和鸡:
interface AnimalDog extends Viviparous<AnimalDog> {
}
interface AnimalChicken extends Oviparous<AnimalChicken> {
}
interface EggChicken extends Egg<AnimalChicken> {
}
Run Code Online (Sandbox Code Playgroud)
最后,这些是实现:
public …Run Code Online (Sandbox Code Playgroud) angular ×1
cmake ×1
date ×1
dictionary ×1
generics ×1
inheritance ×1
interface ×1
java ×1
macos ×1
plist ×1
typescript ×1
xcode ×1