b

Play of Scala - import 의 위치 본문

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로 빠진다~ (전에도 ...)

Comments