关于CSS网格的所有指南似乎都暗示了一种结构,其中位于网格中的元素是网格本身的子元素.
<div class="wrapper">
<div>A</div>
<div>B</div>
</div>
Run Code Online (Sandbox Code Playgroud)
凡.wrapper具有display: grid和网格属性的定义.
如果我想在网格本身上放置一个网格的"孙子"元素(而不是依赖于它的父级?),这是否有意义?
<div class="wrapper">
<div>A</div>
<div>
<div>B</div>
<div>C</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
在这里,我希望能够将A,B和C各自放在他们自己的网格行上; 这甚至有意义吗?
我的一个朋友被所有着名的'循环'javascript问题中的匿名函数所困扰.(它被解释为死于SO,而我实际上期待有人将我的问题视为副本,这可能是公平的游戏).
问题相当于John Resig在本教程中解释的内容:
http://ejohn.org/apps/learn/#62
var count = 0;
for ( var i = 0; i < 4; i++ ) {
setTimeout(function(){
assert( i == count++, "Check the value of i." );
}, i * 200);
}
Run Code Online (Sandbox Code Playgroud)
他们说,对于新用户来说,它应该可以工作,但确实"我总是拥有相同的价值观",因此哭泣和牙齿咬牙切齿.
我解释了很多挥手问题和一些关于范围的问题,并指出他在SO或其他网站上提供的一些解决方案(实际上,当你知道它是如此常见的问题时,谷歌是你的朋友).
当然,真正的答案是在JS中,范围处于功能级别.因此,当匿名函数运行时,'i'没有在其中任何一个的范围内定义,但它在全局范围内定义,并且它具有循环结束的值,4.
既然我们都很有可能接受过使用块级范围的语言的训练,那么它仍然是另一回事 - js-that-a-little-bit-bits-the-the-the-world ("这个"的意思,有人吗?)
让我烦恼的是,常见的答案,实际上甚至是John自己提供的答案如下:
var count = 0;
for ( var i = 0; i < 4; i++ ) (function(i){
setTimeout(function(){
assert( i == count++, "Check the value of i." );
}, i * 200);
})(i);
Run Code Online (Sandbox Code Playgroud)
这显然是有效的,并证明了对语言的掌握和对嵌套括号的品味,可疑地让你看起来像一个LISP-er.
然而,我不禁想,其他的解决方案将是 …
假设我在js模块中有一个typedef类型
// somewhere/foo.js
/**
* @module
*/
/**
* @typedef Foo
* @type {object}
* property {string} bar - some property
*/
Run Code Online (Sandbox Code Playgroud)
是否可以在另一个模块中引用此类型,以便在jsdoc生成的HTML页面中,类型显示为typedef-ed模块的链接?
我试过这种变化,但似乎没有任何作用......
// somewhere_else/bar.js
/**
* @module
*/
/**
* @param {somewhere/foo/Foo} foo - some param
*/
export default function doStuff(foo) {
...
}
Run Code Online (Sandbox Code Playgroud) 假设我有一个具有此状态结构的redux存储:
{
items: {
"id1" : {
foo: "foo1",
bar: "bar1"
},
"id2": {
foo: "foo2",
bar: "bar2"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个商店通过接收物品的全新价值而发展:
const reduceItems = function(items = {}, action) {
if (action.type === 'RECEIVE_ITEM') {
return {
...items,
[action.payload.id]: action.payload,
};
}
return items;
};
Run Code Online (Sandbox Code Playgroud)
我想显示一个Root视图,它呈现一个SubItem视图列表,它只提取状态的一部分.例如,SubItem视图只关心foos,应该得到它:
function SubItem({ id, foo }) {
return <div key={id}>{foo}</div>
}
Run Code Online (Sandbox Code Playgroud)
因为我只关心状态的"子部分",这就是我想要传递给"哑"的Root视图:
const Root = function({ subitems }) {
// subitems[0] => { id: 'id1', foo: "foo1" }
// subitems[1] => { id; 'id2', foo …Run Code Online (Sandbox Code Playgroud) 我在使用automake的项目中遇到了一个非常奇怪的链接错误.我从手册中看起来很简单,所以我真的很想知道我做错了什么......
我的项目有三个文件夹:
每个库都使用Makefile.am编译,如下所示:
noinst_LIBRARIES=libube-common.a
libube_common_a_SOURCES=gettext.h lua_helper.hpp \
silent_ostream.hpp \
logging.hpp logging.cpp \
logger_interface.hpp \
... etc ...
AM_CPPFLAGS=-DSRCDIR=\"${srcdir}\" \
-DLUADIR=\"${luadir}\" \
-Wall -Werror \
-I$(srcdir)/../../include \
$(LUA_INCLUDE) \
$(BOOST_CPPFLAGS)
Run Code Online (Sandbox Code Playgroud)
这导致各种对象使用如下行构建:
g++ -DHAVE_CONFIG_H -I. -I../../../../../src/common -I../.. -DSRCDIR=\"../../../../../src/common\" -DLUADIR=\"\" -Wall -Werror -I../../../../../src/common/../../include -I/usr/include/lua5.1 -I/usr/include -g -O2 -MT logging.o -MD -MP -MF .deps/logging.Tpo -c -o logging.o ../../../../../src/common/logging.cpp
Run Code Online (Sandbox Code Playgroud)
所有这些都放在图书馆中:
ar cru libube-common.a logging.o prefix_resource_resolver.o stat_file_checker.o
ranlib libube-common.a
Run Code Online (Sandbox Code Playgroud)
所有这一切似乎都很好,我甚至可以将一些小测试程序与库相连(在同一个makefile中)
然后,在我的主程序的Makefile.am中,我要求链接本地库:
ube_LDADD=../common/libube-common.a \
../engine/libube-engine.a \
libube-client.a \
... other libs ...
Run Code Online (Sandbox Code Playgroud)
这就是我得到这样的错误:
g++ …Run Code Online (Sandbox Code Playgroud) 问候
我正在研究一种由小日食项目组成的产品.我们维护.project文件,并使用常春藤生成.classpath文件,因此每个项目的处理都很容易.
但是,更痛苦的是创建一个包含所有项目的工作空间.它很少发生(基本上每次我们分支所有代码的realease和东西).
有没有人知道以编程方式创建Eclipse 工作区的方法?可以编写ant任务的东西:
我有一个javascript项目,大多数模块使用一些第三方库作为'全局'依赖项(特别是jquery和jquery插件)
我想"清理"项目(将所有库表示为requirejs依赖项.)但是在我的情况下这是一个大任务(许多文件,许多第三方库).
我怎样才能更轻松/更快地完成迁移?
编辑:我的上一个问题的意思是"是否可以自动重写我的js文件,以便明确地导入依赖项而不是依赖于浏览器全局变量?"
我正在尝试创建一个非常基本的基座应用程序来显示项目列表,或者如果列表为空则创建一条短信.
我以为我想要的是:
[node-create [] :map] 通过做......什么都没有?[node-create [:root] :map] 通过渲染整页的模板[node-create [:root :items] :map] 通过添加空列表的模板要清楚,我最终想要展示的是(没有元素)
<html>
<div>My list</div>
<p>There is nothing in the list</p>
</html>
Run Code Online (Sandbox Code Playgroud)
当列表中有东西时:
<html>
<div>My list</div>
<ul>
<li>item1</li>
<li>item2</li>
</ul>
</html>
Run Code Online (Sandbox Code Playgroud)
我在这里走在正确的轨道上吗?
我坚持初始化数据模型是我想要的.我得到的最接近的是:
;; behavior.clj
(defn init-root-transform [old-value message]
{})
(defn init-items-transform [old-value message]
[])
(def example-app
{:version 2
;; :transform [[:set-value [:greeting] set-value-transform]]})
:transform [[:bootstrap [:root] init-app-transform]
[:bootstrap-systems [:root :items] init-items-transform]
]})
;; start.cljs
... skipped...
(app/begin app)
(p/put-message …Run Code Online (Sandbox Code Playgroud) Rust 有内置函数可以围绕空格分割字符串,例如:
let mut iter = " Hello world".split_whitespace();
assert_eq!(Some("Hello"), iter.next());
assert_eq!(Some("world"), iter.next());
Run Code Online (Sandbox Code Playgroud)
但是,我想要一种将字符串拆分为单词的方法,以及它们在字符串中的相应位置。
let mut iter = ??????(" Hello world");
assert_eq!(Some((1, "Hello")), iter.next());
assert_eq!(Some((7, "world")), iter.next());
Run Code Online (Sandbox Code Playgroud)
我完全不知道从哪里开始,因为:
内置的split和split_whitespace函数“消耗”空白,所以我不知道给定元素之前出现了多少空白。我应该从 开始split(''),并以某种方式将非空白“分组”在一起吗?
有一个match_indices函数可以执行类似的操作,但它只能查找给定的字符串或字符(使用闭包)。
有内置的东西吗?或者我需要迭代迭代std::str::Chars器吗?
如果是这样,我将如何从Chars给定字符的迭代器转到表示下一个单词的字符串?有没有一种安全的方法从函数返回它?(到目前为止,编译器从未让我这样做)
我一直在阅读Misko Hevery 关于依赖注入的经典 文章,基本上是"将对象图创建代码与代码逻辑分离".
主要想法似乎是"摆脱'新'运营商',将它们放入专用对象('工厂')并注入你所依赖的一切."
现在,我似乎无法理解如何使用由几个其他组件组成的对象,并且其工作是将这些组件隔离到外部世界.
一个View类,表示几个字段和一个按钮的组合.所有组件都依赖于图形ui上下文,但您希望将其隐藏在每个子组件的接口后面.
所以像(在伪代码中,语言并不重要我猜):
class CustomView() {
public CustomView(UIContext ui) {
this.ui = ui
}
public void start() {
this.field = new Field(this.ui);
this.button = new Button(this.ui, "ClickMe");
this.button.addEventListener(function () {
if (field.getText().isEmtpy()) {
alert("Field should not be empty");
} else {
this.fireValueEntered(this.field.getText());
}
});
}
// The interface of this component is that callers
// subscribe to "addValueEnteredListener"..)
public void addValueEnteredListener(Callback ...) {
}
public void fireValueEnteredListener(text) {
// Would call each …Run Code Online (Sandbox Code Playgroud)