小编Ala*_*Maw的帖子

将IEnumerable <T>拆分为固定大小的块(返回IEnumerable <IEnumerable <T >>,其中内部序列具有固定长度)

我想把IEnumerable<T>它分成固定大小的块.

我有这个,但由于所有列表创建/复制,它似乎不优雅:

private static IEnumerable<IEnumerable<T>> Partition<T>(this IEnumerable<T> items, int partitionSize)
{
    List<T> partition = new List<T>(partitionSize);
    foreach (T item in items)
    {
        partition.Add(item);
        if (partition.Count == partitionSize)
        {
            yield return partition;
            partition = new List<T>(partitionSize);
        }
    }
    // Cope with items.Count % partitionSize != 0
    if (partition.Count > 0) yield return partition;
}
Run Code Online (Sandbox Code Playgroud)

有没有更惯用的东西?

编辑:虽然这已被标记为Divide数组的副本到子序列数组的数组,但它不是 - 该问题涉及拆分数组,而这是关于IEnumerable<T>.此外,该问题要求填充最后一个子序列.这两个问题密切相关,但并不相同.

c# linq ienumerable

44
推荐指数
5
解决办法
3万
查看次数

嵌套的React <input>元素失去了对键入的关注

我有:

  • 一个组件App与子组件Filter.
  • 孩子需要在父母中改变状态,而这正是通过父母进行的<input onChange={handler}>.
  • handlerprop是对孩子由家长设定.

到目前为止都很好.

但是,只要在输入上按下某个键,它就会失去焦点.我认为它正在被摧毁并重新渲染.

如果我将Filter组件提升到一个级别并将其App驱动到该状态,那么一切都按照您的预期运行,但显然我希望能够嵌套组件并在顶层共享状态.

我想在这个更高级别调用setState导致整个事情被重新渲染,但我认为diffing算法足够聪明,以避免替换Filter子组件中的节点,从而避免模糊焦点<input>.

我做错了什么/我该如何解决这个问题?有没有更好的方法来构建它?

在这里工作JSBin:http://jsbin.com/fexoyoqi/10/edit?html,js,output

var App = React.createClass({
  getInitialState: function() {
    return {
      items: ["Tom", "Dick", "Harry"],
      filterText: ''
    };
  },

  setFilterText: function (event) {
    this.setState({filterText: event.target.value});
  },

  render: function () {
    var filter = React.createClass({
      render: function () {
        return <input value={this.props.filterText} onChange={this.props.onChange}/>;
      }
    });

    var rows = this.state.items
      .filter(function (item) { …
Run Code Online (Sandbox Code Playgroud)

reactjs

9
推荐指数
1
解决办法
3357
查看次数

“Export CI=true”在这个 create-react-app 部署脚本中有什么作用?

launch.sh在我们的 Create React App 中有一个文件,用于将内容发布到 CDN。那里的其中一行说export CI=true。我不知道在这种情况下“CI”是什么意思,以及它的作用。

deployment jenkins reactjs create-react-app

6
推荐指数
1
解决办法
1万
查看次数

如何基于Func <T>将IObservable <T>窗口/缓冲到块中

给出一个类:

class Foo { DateTime Timestamp {get; set;} }
Run Code Online (Sandbox Code Playgroud)

......并且IObservable<Foo>,在保证单调增加 Timestamp s的情况下,如何IObservable<IList<Foo>>根据这些Timestamps 生成一个列入Lists的列表?

即每个人IList<Foo>应该有五秒钟的事件,或者其他什么.我知道我可以使用Buffer具有TimeSpan过载,但我需要花时间从事件本身,而不是挂钟.(除非有一种聪明的方式来提供一个IScheduler使用IObservable自身作为来源的.Now?)

如果我尝试使用这样的Observable.Buffer(this IObservable<Foo> source, IObservable<Foo> bufferBoundaries)重载:

IObservable<Foo> foos = //...;
var pub = foos.Publish();
var windows = pub.Select(x => new DateTime(
    x.Ticks - x.Ticks % TimeSpan.FromSeconds(5).Ticks)).DistinctUntilChanged();

pub.Buffer(windows).Subscribe(x => t.Dump()));  // linqpad
pub.Connect();
Run Code Online (Sandbox Code Playgroud)

...然后IList实例包含导致窗口关闭的项目,但我真的希望这个项目进入下一个窗口/缓冲区.

例如,使用时间戳,[0, 1, 10, 11, 15]您将得到块[[0], [1, …

c# system.reactive observable

5
推荐指数
1
解决办法
886
查看次数

尝试为SolidColorBrush静态资源设置动画

我想要什么

我想重用多种UserControl类型的一些样式.

我希望一些Border控件的背景能够闪现,我希望他们都能使用相同的样式,静态资源和动画,这样它们就会同步闪烁.


我是怎么做的

为此,我在资源字典中定义了一些常用颜色,如下所示:

<SolidColorBrush x:Key="StatusErrorBackground" Color="#440000" />
Run Code Online (Sandbox Code Playgroud)

...我还在这本词典中定义了一个StoryBoard,如下所示:

<Storyboard x:Key="BackgroundAnimation">
    <ColorAnimation
        Storyboard.Target="{StaticResource StatusErrorBackground}"
        Storyboard.TargetProperty="Color"
        From="#440000"
        To="#ff0000"
        Duration="0:0:1"
        RepeatBehavior="Forever"
        AutoReverse="True"/>
</Storyboard>
Run Code Online (Sandbox Code Playgroud)

然后我将以下内容添加到顶级UserControl:

<FrameworkElement.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="CommonResources.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</FrameworkElement.Resources>

<FrameworkElement.Triggers>
    <EventTrigger RoutedEvent="FrameworkElement.Loaded">
        <BeginStoryboard Storyboard="{StaticResource BackgroundAnimation}"/>
    </EventTrigger>
</FrameworkElement.Triggers>
Run Code Online (Sandbox Code Playgroud)

...然后在其他各种UserControls中,我重新导入ResourceDictionary上面的内容并使用{StaticResource StatusErrorBackground}for a Background.

有问题的元素是红色的(如SolidColorBrush声明中所示),但它们并没有闪烁.


到目前为止模糊理解

也许这样做不会对有问题的元素引发相应的PropertyChanged通知,所以它们不会被重绘?或类似的东西.该Color物业SolidColorBrush是不是一个依赖项属性,但SolidColorBrush器物IAnimatable,所以很明显有神奇的事情发生在幕后这里后面我不明白.

或者是因为我在两个不同的地方导入相同的资源字典(一次在我的顶级UserControl加一次在我的孩子中)我最终得到两个独立的StaticResource引用?如果您ResourceDictionary在两个不同的控件中导入相同的文件,它是否为每个控件创建独立的资源?在这种情况下,我可以通过在应用程序级别将其拉入来解决这个问题,我猜...

谁能告诉我我做错了什么以及如何解决它?

wpf animation brush resourcedictionary staticresource

3
推荐指数
1
解决办法
3692
查看次数

在使用可点击内容拖动gridster.js小部件后,如何避免单击事件触发?

我正在使用能够拖动内容的Gridster(http://gridster.net/)li.在我的li有一个可点击的div.

<li data-row="1" data-col="1" data-sizex="2" data-sizey="1">
    <a href=' '>
    <div>
       content
    </div>
    </a>
</li>
Run Code Online (Sandbox Code Playgroud)

所以这里是我面临的问题,当我停止并释放拖动时,它将调用div中的单击,我如何只是拖动div,而不是在拖动停止和释放后调用单击.我不希望它在拖动后重定向到另一个页面(用户拖动和释放..因为当拖动时,它需要单击div,同时,div可以被点击,所以当停止并释放拖动时,它将调用点击)

$(function(){ //DOM Ready

    var gridster = $(".gridster ul").gridster(
    {
          widget_margins: [5, 5],
        widget_base_dimensions: [128, 130],
        max_size_y: 2,
        max_size_x: 2,
        extra_cols: 6
    }
    ).data('gridster');
    //which i tried but failed
    gridster.draggable.stop(){
        onclick = "false";
    }


//   gridster.resize_widget($('.gridster li').eq(0), 1,1);

});
Run Code Online (Sandbox Code Playgroud)

或任何人都可以提供有关如何调用或使用gridster提供的功能的提示

draggable.stop:function(event,ui){}拖动停止时的回调.

我想这里会有一些实现.

最初的解决方案,但仍然没有工作

    var gridster ,draggable ;
   $(function () {
        gridster = $(".gridster > ul").find("> li ").click(function(e){
            !draggable && alert(1) …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-plugins gridster

2
推荐指数
2
解决办法
7482
查看次数