play framework
Play of Scala - import 의 위치
dev.bistro
2013. 1. 30. 16:10
package controllers
import play.api.mvc.{ Action, Controller }
object Barcodes extends Controller {
val ImageResolution = 144
def barcode(ean: Long) = Action {
import java.lang.IllegalArgumentException
val MimeType = "image/png"
try {
val imageData = ean13BarCode(ean, MimeType)
Ok(imageData).as(MimeType)
} catch {
case e: IllegalArgumentException =>
BadRequest("Couldn’t generate bar code. Error: " + e.getMessage)
}
}
def ean13BarCode(ean: Long, mimeType: String): Array[Byte] = {
import java.io.ByteArrayOutputStream
import java.awt.image.BufferedImage
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider
import org.krysalis.barcode4j.impl.upcean.EAN13Bean
val output: ByteArrayOutputStream = new ByteArrayOutputStream
val canvas: BitmapCanvasProvider =
new BitmapCanvasProvider(output, mimeType, ImageResolution,
BufferedImage.TYPE_BYTE_BINARY, false, 0)
val barcode = new EAN13Bean()
barcode.generateBarcode(canvas, String valueOf ean)
canvas.finish
output.toByteArray
}
}
1. import 는 scope을 가진다. - 펑션 ean13BarCode의 import를 다른 펑션에 위치하면 에러!
2. import 는 사용하기 이전에 선언되어야 한다. 펑션 ean13BarCode의 import를 아래쪽에 위치하면 에러!
3. import를 def '최하단 펑션밖에 선언해도 에러!' - 이건 자바랑 똑같네.
4. barcode의 IllegalArgumentException 는 예외가 발생안하면 import 없어도 no에러! (-_-?)
ps. 또 play하다 scala로 빠진다~ (전에도 ...)