[Groovy] 关于groovy mixin(混入)的语法

zengsun 2008-01-03
请看下面一段代码:
import org.codehaus.groovy.runtime.TimeCategory

use(TimeCategory) {
    println new Date() + 1.hour + 3.weeks - 2.days
    def now = new Date()
    def zero = now - now.hours.hours - now.minutes.minutes - now.seconds.seconds
    println zero
}

通过使用TimeCategory的静态方法为Integer混入了如hours、minutes等方法。
现在我想为Date类型混入zero方法,以实现获得 now - now.hours.hours - now.minutes.minutes - now.seconds.seconds 获得某天零时刻的功能。
class DateExt {
	static zero(Date date) {
		use(TimeCategory) {
			date - date.hours.hours - date.minutes.minutes - date.seconds.seconds
		}
	}
}

但是上面的语法是错误的!请指点,谢谢!
zengsun 2008-01-03
zengsun 写道
请看下面一段代码:
import org.codehaus.groovy.runtime.TimeCategory

use(TimeCategory) {
    println new Date() + 1.hour + 3.weeks - 2.days
    def now = new Date()
    def zero = now - now.hours.hours - now.minutes.minutes - now.seconds.seconds
    println zero
}

通过使用TimeCategory的静态方法为Integer混入了如hours、minutes等方法。
现在我想为Date类型混入zero方法,以实现获得 now - now.hours.hours - now.minutes.minutes - now.seconds.seconds 获得某天零时刻的功能。
class DateExt {
	static zero(Date date) {
		use(TimeCategory) {
			date - date.hours.hours - date.minutes.minutes - date.seconds.seconds
		}
	}
}

但是上面的语法是错误的!请指点,谢谢!


自己反复试了一下,得正解:
class DateExt {
	static getZero(Date date) {
		use(TimeCategory) {
			date - date.hours.hours - date.minutes.minutes - date.seconds.seconds
		}
	}
}

use(DateExt) {
    def now = new Date()
    println now.zero
}
agile_boy 2008-01-04
呵呵, 不错,简洁的语法
shiren1118 2008-01-04
zengsun 写道
请看下面一段代码:
import org.codehaus.groovy.runtime.TimeCategory

use(TimeCategory) {
    println new Date() + 1.hour + 3.weeks - 2.days
    def now = new Date()
    def zero = now - now.hours.hours - now.minutes.minutes - now.seconds.seconds
    println zero
}

通过使用TimeCategory的静态方法为Integer混入了如hours、minutes等方法。
现在我想为Date类型混入zero方法,以实现获得 now - now.hours.hours - now.minutes.minutes - now.seconds.seconds 获得某天零时刻的功能。
class DateExt {
	static zero(Date date) {
		use(TimeCategory) {
			date - date.hours.hours - date.minutes.minutes - date.seconds.seconds
		}
	}
}

但是上面的语法是错误的!请指点,谢谢!


记得山风写过一个,呵呵,去他那看看啊
geszJava 2008-01-07
学习ing
Global site tag (gtag.js) - Google Analytics