在一行中编写类似这样的东西的好方法是什么.如果在调试模式下值为nil,则目标是在消息级别记录消息,以及所示的正确消息.看起来很简单,但为这样小的东西编写5行代码一直困扰着我.我可以用方法包装它,但是如果可以的话我想避免.谢谢.
if value.nil?
Rails.logger.info "value: nil"
else
Rails.logger.debug "value: #{value.inspect}"
end
Run Code Online (Sandbox Code Playgroud) Registration.scala
package model
import akka.actor.Actor
import spray.json._
import DefaultJsonProtocol._
case class Registration(
system: String,
identity: String)
object RegistrationProtocol extends DefaultJsonProtocol {
implicit val adsRegistrationFormat = jsonFormat2(Registration)
}
Run Code Online (Sandbox Code Playgroud)
RegistrationService.scala
import akka.actor.{Props, ActorLogging, Actor}
import model.Registration
object RegistrationsService {
case class PostRegistrationMessage(registration: Registration)
def props(property: String) = Props(classOf[RegistrationsService], property)
}
class RegistrationsService(property: String) extends Actor with ActorLogging {
import RegistrationsService._
def receive = {
case PostRegistrationMessage(registration) => {
import model.RegistrationProtocol._
val json = registration.toJson
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我理解为什么这会失败,编译错误"值toJson不是model.Registration的成员"以及如何解决它.如果在上面代码的最后一行失败,那就是" val json = registration.toJson …
代码执行正常,但在默认的mongo数据库和位置创建集合,即在测试数据库@ localhost:27017中.在通过以下xml连接的mongoTemplate bean中,我使用mydb作为数据库,运行在localhost:27018的mongod实例.但是,数据仍然会持久保存到默认实例和数据库.
在src/main/resources/mongo-context.xml中定义的MongoDB XML Bean:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">
<mongo:mongo id="mongo" host="localhost" port="27018"/>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo" />
<constructor-arg value="mydb" />
</bean>
<mongo:repositories base-package="core.repository" mongo-template-ref="mongoTemplate"/>
</beans>
Run Code Online (Sandbox Code Playgroud)
播放列表存储库:
package core.repository;
import core.dao.Playlist;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.repository.Repository;
/**
* This repository provides CRUD operations for {@link core.dao.Playlist} objects.
*/
public interface PlaylistRepository extends Repository<Playlist, String> {
/**
* Finds the information of a single Playlist entry.
* …Run Code Online (Sandbox Code Playgroud) 我需要写几个这样的函数.是否有更好的方法使用lambda在一行左右编写此函数.
def is_digital(offers):
for offer in offers:
digital = True if 'digital' in offer and offer['digital'] else False
if digital:
return True
return False
Run Code Online (Sandbox Code Playgroud) 我不断重复这样的块来验证请求参数。有没有更短/更好的方法来实现这一目标?
count = request.args.get('count', DEFAULT_COUNT)
if count:
try:
count = int(count)
except ValueError:
count = DEFAULT_COUNT
Run Code Online (Sandbox Code Playgroud) 这可能听起来很愚蠢,但是如果每个类都隐式扩展了Object类并且允许再扩展一个类,那么它怎么不是多重继承呢?从用户的角度来看,可能有人认为它们不支持多重继承,因为不允许用户扩展多个类.但是,这些语言似乎具有对多重继承的内部支持,而这种继承只是为了保持简单而不向用户公开.我有道理吗?
注意:我不支持或反对支持多重继承.只是想澄清一些想法.
在这个方法中,我想看到实际的响应(result.toJson.toString或StatusCodes.InternalServerError.toString)返回而不是空字符串.我怎样才能做到这一点?
def process(msgIn : WebSocketMessageIn, service : ActorRef) : String = {
import model.Registration
import model.RegistrationJsonProtocol._
implicit val timeout = Timeout(10 seconds)
msgIn.method.toUpperCase match {
case "POST" =>
log.debug(s"Handing POST message with body ${msgIn.body}")
val registration = msgIn.body.convertTo[Registration]
val future = (service ? PostRegistrationMessage(registration)).mapTo[Registration]
var response = ""
future onComplete {
case Success(result) =>
response = result.toJson.toString
case Failure(e) =>
log.error(s"Error: ${e.toString}")
response = StatusCodes.InternalServerError.toString
}
response
case "PUT" =>
s"Handing PUT message ${msgIn.body}"
}
}
Run Code Online (Sandbox Code Playgroud)
以下是调用该方法并将响应发送到websocket的代码片段
case Message(ws, msg, …Run Code Online (Sandbox Code Playgroud) python ×2
python-2.7 ×2
ruby ×2
scala ×2
akka ×1
asynchronous ×1
flask ×1
java ×1
lambda ×1
mongodb ×1
reduce ×1
spray-json ×1
spring ×1
spring-boot ×1
validation ×1
websocket ×1
werkzeug ×1