小编Sau*_*abh的帖子

Scala:如何使用默认值初始化对象

我想用一个例子可以更好地解释这一点

我有以下案例类

case class Person(name: String = "no name", surname: String = "no surname")
Run Code Online (Sandbox Code Playgroud)

我想制作一个通用函数来填充它,例如,json消息,可能没有指定所有字段

我知道要使用默认值,简单的答案不是将它们传递给构造函数,但如果我有几个字段可能会或可能不会出现在json中,我应该使用一个巨大的切换句子覆盖每个可能的组合缺少参数.在这种情况下,读完json之后,我应该照顾姓名和姓氏,没有姓名,没有姓,也没有名字和姓氏......(哎呀,我希望自己明白了).

更确切地说,我正在尝试开发一个函数,允许我从followgin json值创建一个人,当缺少某些参数时使用默认值

{ "name": "john", "surname": "doe" }
{ "surname": "doe" }
{ "name": "john" }
{ }
Run Code Online (Sandbox Code Playgroud)

这就是为什么我正在寻找一种更通用的方法来处理这个问题.

(我将展示一些伪代码,以便了解我想要实现的目标)

我在考虑这样的事情:

val p = Person(name= "new person name", surname= Unit)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,姓氏应该获得默认值

或类似的东西

val p = Person( Map( "name" -> "new person name" ) _* )
Run Code Online (Sandbox Code Playgroud)

因此它也采用了surname的默认值

或者也许在构造函数中执行它,如果我检测到空值(或None),我可以分配默认值.

实际上,我试图避免重复默认值的定义.

无论如何,实现这样的事情最常用的方式是什么?

constructor scala default-value

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

如何使用Vue Router创建锚标签

我正在创建一个小的Vue webapp,我想在此创建一个锚标签.

我给了id一个div我希望有这样的锚标签:

<div id="for-home">
   ....
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的路由器配置:

export default new Router({
  abstract: true,
  mode: 'history',
  scrollBehavior: () => ({ y: 0 }),
  routes: [
    { path: '/', component: abcView}
  ]
})
Run Code Online (Sandbox Code Playgroud)

但是这个锚标签有时会工作,有时候不起作用,我错过了什么吗?

html javascript vue.js

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

我可以从Vuex中的getter发送

小提琴:这里

我正在使用Vuex和Vuex创建一个webapp.我有一个商店,我想从getter获取状态数据,我想要的是如果getter发现数据尚未填充,它会调用dispatch并获取数据.

以下是我的Vuex商店:

const state = {
  pets: []
};

const mutations = {
  SET_PETS (state, response) {
    state.pets = response;
  }
};

const actions = {
 FETCH_PETS: (state) => {
      setTimeout(function() { 
            state.commit('SET_PETS', ['t7m12qbvb/apple_9', '6pat9znxz/1448127928_kiwi'])
    }, 1000)
 }
}

const getters = {
    pets(state){
    if(!state.pets.length){
        state.dispatch("FETCH_PETS")
    }
    return state.pets
  }
}

const store = new Vuex.Store({
  state,
  mutations,
  actions,
  getters
});
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

未捕获的TypeError:state.dispatch不是函数(...)

我知道我可以从beforeMountVue组件中做到这一点,但是我有多个组件使用相同的Vuex存储,所以我必须在其中一个组件中执行它,应该是哪个组件以及它将如何影响其他组件.

javascript vue.js vue-component vuex vuejs2

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

如何在Vue 2中查看数据对象中的所有键

我的数据对象:

data: {
    selected: {
        'type': null,
        'instrument': null
    },
Run Code Online (Sandbox Code Playgroud)

我的模板:

<select v-model="selected['instrument']" @change="switchFilter('instrument', $event)">
    <option v-for="instrument in instruments" :value="instrument.value">@{{ instrument.text }}</option> 
</select>

<select v-model="selected['type']" @change="switchFilter('type', $event)">
    <option v-for="type in types" :value="type.value">@{{ type.text }}</option> 
</select>
Run Code Online (Sandbox Code Playgroud)

如何同时查看两个选定的索引?每当任何索引更新时,我想做类似的事情:

watch: {
    selected: function(o, n) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

watch vue.js vuejs2

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

什么会导致java进程大大超过Xmx或Xss限制?

我在3个不同的服务器上运行了7个不同的java守护进程(全部7个).java命令行有-Xmx2048m和-Xss1024k.在这3台服务器上,所有21个进程在顶部和顶部都显示不到2.5 GB的VIRT大小.根据守护进程,RES大小从300到1.9 GB不等.

这就是应有的一切.

输入新服务器.更快的CPU,更多的RAM(16 GB而不是8 GB),略微更新的java(旧服务器上为1.6.0_10-b33,新服务器上为1.6.0_31-b04).两个系统(和JVM)都是64位.

将2个守护进程移动到新服务器.在新服务器上,给定相同的任务,守护进程都消耗了大量CPU(大约是核心价值)并且做得少.(从旧系统上的5110处理器转移到新系统上的5620处理器).

几乎是CPU使用的全部额外核心(GC线程??),并为一个守护程序报告5 GB VIRT和2 GB RES,为另一个守护程序报告10.5 GB VIRT和2 GB RES.

什么会导致java忽略(或似乎忽略,如果是这种情况)内存限制的任何想法?

java linux memory xss jvm

13
推荐指数
1
解决办法
9086
查看次数

如何用背景颜色显示md-toast

我正在尝试使用角度材料创建具有一些背景颜色的吐司面具.我使用这个问题的答案,我创建了这个codepen,但它也显示了一些不想要的背景toast.

HTML:

<div ng-controller="AppCtrl" layout-fill="" layout="column" class="inset toastdemoBasicUsage" ng-cloak="" ng-app="MyApp">
  <p>
    Toast is not properly working with theme defined in CSS.
    <br>
  </p>

  <div layout="row" layout-sm="column" layout-align="space-around">
    <md-button ng-click="showSimpleToast()">
      Toast
    </md-button>
  </div>    
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

md-toast.md-success-toast-theme {
    background-color: green;
}

md-toast.md-error-toast-theme {
    background-color: maroon;
    position: 'top right'
}

md-toast {
    height: 40px;
    width: 50px;
    margin-left: auto;
    margin-right: auto;
    left: 0; right: 0;
    top:10px;
}
Run Code Online (Sandbox Code Playgroud)

JS:

angular.module('MyApp',['ngMaterial', 'ngMessages'])
.controller('AppCtrl', function($scope, $mdToast, $document) {
  $scope.showSimpleToast = function() {
    $mdToast.show( …
Run Code Online (Sandbox Code Playgroud)

css angularjs angular-material

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

$ emit不会触发子事件

对于VueJS 2.0项目,我在父组件上有以下内容

<template>
<child></child>
<button @click="$emit('childEvent)"></button>
</template>
Run Code Online (Sandbox Code Playgroud)

在我有的子组件上:

{
  events: { 'childEvent' : function(){.... },
  ready() { this.$on('childEvent',...) },
  methods: { childEvent() {....} }
}
Run Code Online (Sandbox Code Playgroud)

按钮点击似乎没有任何效果.是否需要创建一个父方法然后发送给孩子?我正在使用vuejs 1.但现在我对父母与孩子沟通的工作方式感到困惑

vue.js vue-component vuejs2

11
推荐指数
4
解决办法
2万
查看次数

计算Vuejs中DOM元素之间距离的最佳方法是什么?

我正在构建一个从数据生成pdf文件的工具,我需要构建两种格式:105mm*148mm和105mm*210mm.所以我得到了我的整个文档,现在是我插入分页符的时候了.我用一个简单的类来做:

.page-break { display: block; page-break-before: always; }
Run Code Online (Sandbox Code Playgroud)

现在我必须将这个类插入到我的v-for循环中.所以一个基本的想法是计算一个区间,就像每个索引是6的倍数,我插入一个.但这不是最好的方法,我想在内容超过90毫米时插入一个休息时间.

为了做到这一点,我想计算2个中断之间的距离,如果距离接近90毫米,则插入一个新的中断.但是,我找不到访问动态DOM元素的方法......

所以问题很简单:如何计算这个距离?或者,如果有更好的方法来实现我的目标,我还能改进什么?

javascript vue.js vuejs2

11
推荐指数
1
解决办法
544
查看次数

运行"hbase shell"在OSX中给出错误

尝试hbase shell在OSX中运行时出现以下错误(版本:10.11.4):

警告:-J-Dfile.encoding = UTF-8参数被忽略(在同一个VM中启动?)

警告:-J-XX:忽略MaxPermSize = 1024m参数(在同一个VM中启动?)

警告:-J-Xmx4096m参数被忽略(在同一个VM中启动?)

TypeError:无法在org/jruby/RubyKernel.java:1071中将Pathname转换为String require

需要在文件:/usr/local/Cellar/hbase/1.2.6/libexec/lib/jruby-complete-1.6.8.jar!/ META INF/jruby.home/lib/ruby​​/site_ruby/1.8/ruby​​gems/custom_require .RB:36

(root)在/usr/local/Cellar/hbase/1.2.6/libexec/bin/hirb.rb:118

我通过以下方式安装了Hbase: brew install hbase

作为该解决方案给在这里,我也试图像下面设置PATH变量:

?  ~ export HBASE_HOME=/usr/local/Cellar/hbase/1.2.6/libexec
?  ~ export PATH=$HBASE_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

我也有jruby-complete-1.6.8.jar$HBASE_HOME/lib,如前所述这里.但仍然会出现同样的错误.

编辑1

? rvm list:

rvm rubies

   ruby-2.1.2 [ x86_64 ]
   ruby-2.2.0 [ x86_64 ]
=* ruby-2.2.2 [ x86_64 ]

# => - current
# =* - current && default
#  * - default


?  ruby -v
ruby 2.0.0p648 (2015-12-16 revision …
Run Code Online (Sandbox Code Playgroud)

ruby java macos hadoop hbase

11
推荐指数
1
解决办法
560
查看次数

在过渡的v-if下面的过渡元素

我有两个元素,顶部的可见性由v-if一个简单的布尔值控制.

transition(name="fade")
    #element1(v-if="showFirst")
        p Foo

#element2
    p Bar
Run Code Online (Sandbox Code Playgroud)

第一个元素包含在<transition>标记中,完全按照Vue文档.

然而,虽然这确实创建了一个褪色动画,但页面上的其他内容仍然非常刺耳.

我怎样才能创建一个过渡,也可以顺利地改变后面任何和所有兄弟姐妹的位置?

演示此问题的小提琴.

javascript vue.js

10
推荐指数
1
解决办法
3740
查看次数