由于我已将Angular应用程序升级为使用Angular CLI版本6.x
,因此将其编译为生产(使用ng build --prod
,像往常一样)不会产生缩小的js.这导致非常大的vendor.js
尺寸(在我的情况下几乎是10 MB).
如果我打开生成的vendor.js
文件,我可以清楚地看到代码没有缩小,并且不会删除注释.
我想找到比使用2次迭代在对象中查找值更好,更优雅的解决方案.我查看了在一个数组中搜索的函数,例如find,indexOf,但我想知道我可以在不使用for或forEach的情况下搜索对象.
假设我想找到所有游泳运动员.到目前为止我得到了什么.
members = [
{ name: "Sue", hobby: ["Swimming", "Running", "Dancing"] },
{ name: "Sam", hobby: ["Cars", "Travelling"] },
{ name: "John", hobby: ["Reading", "Swimming"] },
{ name: "Rob", hobby: ["Running", "Coding"] },
];
function findSwimmers(members, hobby) {
let swimmers = [];
members.forEach(function (e){
e.hobby.forEach(function (element){
if (element.toLowerCase() === hobby.toLowerCase()) {
swimmers.push(e);
}
});
});
return swimmers;
}
Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用 liquibase,并在其中一个变更日志中遇到了这一行:
--changeset NAME.SURNAME:1 endDelimiter:@ rollbackEndDelimiter:@
Run Code Online (Sandbox Code Playgroud)
的用法是什么"endDelimiter:@"
。我认为它取代了默认的结束分隔符(定义行尾的字符),但";"
为什么呢?
抱歉,如果我的问题格式不正确,这是我的第一个问题:)
当我安装scrapy软件包时,发生以下错误:
错误:需要Microsoft Visual C ++ 14.0。使用“ Microsoft Visual C ++生成工具”获得它:http : //landinghub.visualstudio.com/visual-cpp-build-tools
但是找不到网站,该如何解决?
所以这更像是一个理论问题.C++和直接基于它的语言(in)(Java,C#,PHP)具有快捷运算符,用于将大多数二元运算符的结果赋值给第一个操作数,例如
a += 3; // for a = a + 3
a *= 3; // for a = a * 3;
a <<= 3; // for a = a << 3;
Run Code Online (Sandbox Code Playgroud)
但是当我想切换一个布尔表达式时,我总会发现自己写的东西就像
a = !a;
Run Code Online (Sandbox Code Playgroud)
这a
是一个很长的表达式,这会很烦人.
this.dataSource.trackedObject.currentValue.booleanFlag =
!this.dataSource.trackedObject.currentValue.booleanFlag;
Run Code Online (Sandbox Code Playgroud)
(是的,德米特定律,我知道).
所以我想知道,是否有任何语言都使用一元布尔切换运算符,这将允许我缩写a = !a
而不重复表达式a
,例如
!=a;
// or
a!!;
Run Code Online (Sandbox Code Playgroud)
让我们假设我们的语言有一个适当的布尔类型(比如bool
在C++中)并且a
属于那种类型(所以没有C风格int a = TRUE
).
如果你能找到一个文档化的源代码,我也有兴趣了解一下,例如C++设计者是否考虑在bool
成为内置类型时添加类似的运算符,如果是这样,为什么他们决定反对它.
(注意:我知道有些人认为作业不应该使用
=
,++
并且+=
不是有用的操作员,而是设计缺陷;让我们假设我对他们感到高兴,并专注于为什么他们不会扩展到bool).
我的 Swift/Obj-C 混合项目设置了两个目标:
MyProject
和 MyProjectTests
为了编写单元测试(使用XCTest
),我对主要目标(MyProject
)构建设置进行了以下配置:
Enable testability = Yes
Defines module = Yes
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我想知道当我指定Defines module = Yes
.
指定是否Defines module = Yes
意味着:
DerivedData
?Defines Module = Yes
标志对文件系统没有任何作用,但仍然允许将主项目目标作为测试目标中的(可测试)模块导入?当我在设备或模拟器中运行我的应用程序时,我在 Logcat 中收到以下错误:
[ERROR:context_group.cc(137)] ContextResult::kFatalFailure: WebGL1 blacklisted
Run Code Online (Sandbox Code Playgroud)
为什么我收到这个错误?
我有一个简单的数组:
var similarObjects: [Objects] = []
我如何才能看到他的变化:
similarObjects = someArray
我尝试:(结果:下一步 -> 完成)
_ = Observable.just(similarObjects)
.subscribe({ event in
return print(event.element)
})
Run Code Online (Sandbox Code Playgroud) 我正在尝试MatDataTable
使用 angular 和 typescript在排序上实现 shift 单击功能。
基本原理是,只要在表上注册了单击事件,就会存储选定的行。
如果检测到 shift 单击,该组件将尝试在最后选定的行和当前选定的行之间进行选择(就像在 Windows 中使用 shift 单击选择一样)。
我的事件处理代码如下:
clickHandler(event, row, index) {
console.log('index clicked: ' + index);
if (event.ctrlKey) {
this.selectRows(row, index); // This records this.lastSelected
} else if (event.shiftKey) {
this.selectRowsFill(row, index);
} else {
this.selectElement(row, index); // As does this call.
}
}
// This function computes a start and end point for autoselection of
// rows between this.lastSelected, and the currently clicked row
selectRowsFill(row, index) {
const indexA …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个库,从中导出 React 组件以及一些接口和枚举。我编译了打字稿项目。这是因为该库是针对 React 而不是 Typescript 的。我也在创建正确的定义文件。
现在在我的消费者项目中,我正在这样做:
import { IMyComponentProps, MyComponent } from "mycomp-lib";
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我能够使用IMyComponentProps
. 我将其用于一个函数,该函数将进行一些计算并返回 的 props MyComponent
。
但从我的库中,我还导出一个枚举,如下所示:
export const enum DirectionEnum {
UP,
DOWN,
RIGHT,
LEFT
}
Run Code Online (Sandbox Code Playgroud)
但当我这样做时import { IMyComponentProps, MyComponent, DirectionEnum } from "mycomp-lib";
DirectionEnum
我开始收到未从 导出的错误mycomp-lib
。
这个枚举是必需的,因为即使 的使用者mycomp-lib
是用纯 JavaScript 编写的,它也很有用。但在 typescript 项目中,它肯定是需要的。
我正在使用 typescript v3 和 React v16.3。